Workflow (1) Update – အနှစ်ချုပ် (Summary)
ဤ Workflow (1) Update သည် WordPress Website တစ်ခုပေါ်တွင် Dynamic Image Content ကို အဆင့် ၃ ဆင့်ဖြင့် ပြသရာတွင် Referer Source ကို စစ်ဆေးခြင်းနှင့် ပုံအရေအတွက် တိုးချဲ့နိုင်ခြင်းတို့ကို ထပ်တိုးထားသည်။ Facebook, Telegram စသည့် Social Media (သို့မဟုတ် သတ်မှတ်ထားသော Website) မှ ?ssid URL parameter ပါဝင်သော Link ဖြင့် ဝင်ရောက်လာသူများအား Dynamic Content Post (Custom Post Type: dynamic_content) မှ ပုံများကို သတ်မှတ်ထားသော Post များပေါ်တွင် အဆင့်လိုက် ပြသသည်။
ထပ်တိုး/အဓိက အင်္ဂါရပ်များ:
-
Custom Post Type (dynamic_content): ပုံများ (၁၀ ပုံအထိ), Next Button များ၏ URL များ၊ SSID (Unique ID)၊ Global CTA (ပုံ+Link)၊ Referer Check ကို Enable/Disable ပြုလုပ်ရန် နှင့် ခွင့်ပြုထားသော Referer URLs များ တို့ကို သိမ်းဆည်းရန်အတွက်။
-
ACF Custom Fields (Free Version): dynamic_content Post များအတွက် အောက်ပါ Fields များ ပါဝင်သည်။
-
content_image_1_url မှ content_image_10_url (ပုံ ၁၀ ပုံအထိ၊ Field Type: URL)
-
stage_1_next_button_image_url, stage_2_next_button_image_url (Next Button ပုံများ၊ Field Type: URL)
-
show_global_cta_in_final_stage (Global CTA ကို Final Stage တွင် ပြသ/မပြသ ထိန်းချုပ်ရန် Radio Button – Choices: yes/no)
-
global_default_cta_image_url, global_default_cta_link_url (ပထမဆုံး dynamic_content Post မှ Global CTA အတွက် တန်ဖိုးများယူရန် – Website တစ်ခုလုံးအတွက် Default CTA အဖြစ် အသုံးပြု)
-
assigned_ssid (Dynamic Content ကို ချိတ်ဆက်ရန် Unique ID၊ Field Type: Text)
-
အသစ်: enable_referer_check (Referer Check ကို ဖွင့်/ပိတ်ရန် Radio Button – Choices: 1:Yes/0:No)
-
အသစ်: global_allowed_referer_urls (ခွင့်ပြုထားသော Referer Domains များကို တစ်ကြောင်းစီ ထည့်သွင်းရန် Text Area)
-
-
URL Parameters: ssid, dcid, imgidx, visited_posts တို့ကို အသုံးပြု၍ လက်ရှိအဆင့်နှင့် ယခင်ရောက်ဖူးသော Posts များကို ထိန်းချုပ်သည်။
-
Display Logic (၃ အဆင့်):
-
အဆင့် (၁) – Start Page: ?ssid ဖြင့် ဝင်ရောက်လာသော မူရင်း Post တွင် dynamic_content မှ ပထမဆုံး ပုံ (၂) ပုံ နှင့် Stage 1 Next Button ကို ပြသသည်။ (ပုံ ၄ ပုံ အနည်းဆုံးရှိမှ Next Button ပေါ်မည်)
-
အဆင့် (၂) – Middle Stage: Stage 1 Next Button ကို နှိပ်ပါက မတူညီသော Random Original Post အသစ်တစ်ခု သို့ redirect လုပ်ပြီး dynamic_content မှ တတိယပုံ (ပုံ-၃) နှင့် စတုတ္ထပုံ (ပုံ-၄) နှစ်ပုံ နှင့် Stage 2 Next Button ကို ပြသသည်။ (ပုံ ၅ ပုံ အနည်းဆုံးရှိမှ Next Button ပေါ်မည်)
-
အဆင့် (၃) – Final Stage: Stage 2 Next Button ကို နှိပ်ပါက မတူညီသော Random Original Post အသစ်တစ်ခု သို့ redirect လုပ်ပြီး dynamic_content မှ ပုံအားလုံး ကို ပြသသည်။ နောက်ဆုံးစာသားနှင့် show_global_cta_in_final_stage ကို yes လုပ်ထားပါက Global CTA (ပုံ+Link) ကိုပါ ပြသသည်။
-
-
Random Post Selection: Start Page, Middle Stage, Final Stage တို့အတွက် လုံးဝ မတူညီသော Regular Posts (၃ ခု) ကို ရွေးချယ်ပြီး Redirect ပြုလုပ်သည်။
-
Error Handling: Page Post Type များကို Home Page (Blog Post Listing) Main Query မှ ဖယ်ထုတ်ထားပြီး Dynamic Workflow ကိုလည်း Page များနှင့် တွဲဖက် အလုပ်မလုပ်စေရ။
-
ပုံစံများ: Dynamic Content ပုံများအားလုံးကို Center တည်ရှိပြီး Original Size အတိုင်း ပြသသည်။ Next Button နှင့် Global CTA တို့ကိုလည်း သတ်မှတ်ထားသော CSS ဖြင့် လှပအောင် ပြုလုပ်ထားသည်။
-
အသစ်: Referer Source Check:
-
functions.php ထဲရှိ is_referer_allowed() function မှတဆင့် enable_referer_check ကို Yes လုပ်ထားပါက global_allowed_referer_urls ထဲတွင် သတ်မှတ်ထားသော Source Domains (ဥပမာ: facebook.com, t.me, mysite.com) မှ လာသော Traffic များအတွက်သာ Dynamic Content Workflow ကို အလုပ်လုပ်စေမည်။
-
သတ်မှတ်ထားသော Source မှ မဟုတ်ပါက Dynamic Content ကို ပြသမည်မဟုတ်ဘဲ မူရင်း Post အတိုင်းသာ ပြသမည်။
-
enable_referer_check ကို No လုပ်ထားပါက မည်သည့် Source မှ လာသည်ဖြစ်စေ ?ssid ပါလာလျှင် Dynamic Content Workflow ကို အလုပ်လုပ်စေမည်။
-
-
အသစ်: ACF Field Toggling (Frontend JS): enable_referer_check ကို Yes ရွေးမှသာ global_allowed_referer_urls Field ကို Admin Panel တွင် ပေါ်စေပြီး No ရွေးပါက ပျောက်ကွယ်သွားစေမည်။
Code Review နှင့် အလုပ်လုပ်ပုံ ဆန်းစစ်ခြင်း
သင်ပေးပို့လိုက်သော functions.php, content-single.php နှင့် style.css Code များအပြင် ACF Field Setup Screenshots များအရ၊
-
Referer Check Feature:
-
functions.php ထဲမှာ ပါဝင်တဲ့ is_referer_allowed() function ဟာ Referer Source ကို အတိအကျ စစ်ဆေးဖို့အတွက် အရေးကြီးတဲ့ Logic တွေ အားလုံးကို ထည့်သွင်းထားပြီးသား ဖြစ်ပါတယ်။
-
handle_dynamic_content_workflow() function ထဲမှာ is_referer_allowed() ကို ခေါ်ယူပြီး Dynamic Workflow ကို စတင်ရန် လိုအပ်သော အခြေအနေတစ်ခုအဖြစ် ထားရှိထားပါတယ်။
-
content-single.php ဘက်မှာတော့ ဒီ is_dynamic_workflow_active (Referer Check အောင်မြင်မှ true ဖြစ်မှာ) ဆိုတဲ့ Global Variable ကိုပဲ စစ်ဆေးတာဖြစ်လို့ မှန်ကန်စွာ ချိတ်ဆက်ထားပြီးသား ဖြစ်ပါတယ်။
-
အလုပ်လုပ်နိုင်စွမ်း: ဒီ Code Logic တွေအရ Referer Check ဟာ သင်လိုချင်တဲ့အတိုင်း တိတိကျကျ အလုပ်လုပ်နိုင်ရပါမယ်။
-
enable_referer_check ကို Yes (1) ထားပြီး global_allowed_referer_urls ထဲမှာ သင်ခွင့်ပြုထားတဲ့ Domains တွေသာ ရှိနေရပါမယ်။
-
စမ်းသပ်ပုံ: Browser URL Bar မှာ https://yoursite.com/your-original-post/?ssid=mlucky9 လို့ တိုက်ရိုက်ရိုက်ထည့်ပြီး ဝင်ကြည့်ပါ။ Dynamic Content ပေါ်မလာသင့်ပါဘူး (မူရင်း Post သာ ပေါ်ရပါမယ်)။
-
ပြီးရင် global_allowed_referer_urls ထဲမှာ ပါတဲ့ Domain တစ်ခုကနေ (ဥပမာ: Facebook ကနေ Link နှိပ်သလိုမျိုး) ဝင်ကြည့်ပါ။ Dynamic Content ပေါ်လာသင့်ပါတယ်။ ဒါမှမဟုတ် console ထဲမှာ document.referrer = “https://facebook.com”; လို့ ရိုက်ပြီး Location ကို ပြောင်းရင် အလုပ်လုပ်မလုပ် စစ်နိုင်ပါတယ်။
-
-
-
Global CTA in Final Stage:
-
content-single.php ထဲမှာ show_global_cta_in_final_stage field ကို yes လို့ ရွေးထားမှသာ Global CTA ကို ပြသမှာ ဖြစ်ပြီး functions.php ထဲမှာ get_global_workflow_settings_for_free_version() က ပထမဆုံး Dynamic Content Post ကနေ အချက်အလက်တွေကို မှန်ကန်စွာ ဆွဲထုတ်ပေးပါတယ်။
-
content-single.php မှာ workflow_global_cta_data ကနေ global_cta_image_url နဲ့ global_cta_link_url ဆိုတဲ့ Key တွေနဲ့ ခေါ်ထားတာက မှန်ကန်ပါတယ်။ (ကျွန်တော် အရင် Code တွေမှာ image_url နဲ့ link_url လို့ ခေါ်မိဖူးတာလေးရှိလို့ အခု မှန်ကန်တာကို မြင်ရလို့ ဝမ်းသာပါတယ်)
-
-
ACF Field Toggling (JavaScript):
-
functions.php ထဲက workflow_admin_dynamic_content_scripts() မှာပါတဲ့ JavaScript က Admin Panel မှာ enable_referer_check ကို Yes ရွေးမှ global_allowed_referer_urls ကို ပေါ်စေပြီး No ရွေးရင် ပျောက်စေမှာ ဖြစ်ပါတယ်။ သင့် Screenshot မှာ No ရွေးထားလို့ Allowed Referer URLs List Field မပေါ်တာဟာ JavaScript က အလုပ်လုပ်လို့ပါပဲ။
Enable Referer Check? field မှာ No ရွေးထားတဲ့အတွက် Allowed Referer URLs List Field ပေါ်မနေတာက အမှန်ပါပဲ။ ဒါဟာ JavaScript က မှန်ကန်စွာ အလုပ်လုပ်နေတယ်ဆိုတာ ပြသပါတယ်။
ဒါပေမယ့် သင့် Screenshot (ပုံ ၁) မှာ Enable Referer Check? ကို No ရွေးထားတဲ့ပုံကို တွေ့ရပါတယ်။ ဒါဆိုရင် Referer Check က functions.php ထဲက Logic အရ Disable ဖြစ်နေပါလိမ့်မယ်။
Referer Check အလုပ်လုပ်စေချင်တယ်ဆိုရင် Enable Referer Check? ကို Yes လို့ ရွေးပြီး Update လုပ်ပေးဖို့ လိုအပ်ပါလိမ့်မယ်။ -
နိဂုံးချုပ်အနေဖြင့်:
သင်ပေးပို့လိုက်တဲ့ Code တွေနဲ့ Screenshots တွေအားလုံးကို ကျွန်တော် ပြန်လည်စစ်ဆေးပြီးပါပြီ။ Code Structure နဲ့ Logic အားလုံးဟာ သင်လိုချင်တဲ့ Workflow 1 Update အတိုင်း မှန်ကန်စွာ ရေးသားထားပြီးသား ဖြစ်ပါတယ်။
Referer Check Feature အမှန်တကယ် အလုပ်လုပ်စေရန်အတွက်:
-
dynamic_content Post ထဲကို ဝင်ပြီး Enable Referer Check? ကို Yes (1) လို့ ရွေးပေးပါ။
-
Global Allowed Referer URLs Text Area မှာ သင်ခွင့်ပြုချင်တဲ့ Domains တွေကို တစ်ကြောင်းစီ ထည့်သွင်းပြီး Post ကို Update လုပ်ပေးပါ။
-
Browser Cache အားလုံးကို ရှင်းပေးပါ။
-
ပြီးရင် Referer Check အလုပ်လုပ်မလုပ် စမ်းသပ်ကြည့်ပါ။
ယခု version မှာ “အဆင့် (၁) – Start Page: ?ssid ဖြင့် ဝင်ရောက်လာသော မူရင်း Post တွင် dynamic_content မှ ပထမဆုံး ပုံ (၂) ပုံ နှင့် Stage 1 Next Button ကို ပြသသည်။”
ဒီအချက်ရဲ့ လိုရင်းက – start page(orginal post + ?ssid) လုပ်မယ့် post ဟာ ဆိုက်မှာရှိတဲ့ မည်သည့် original post တွင်မဆို နောက်က ?ssid လာရင် “ဘယ်နေရာကပဲလာလာ(မည်သည့် source ကပဲလာလာ)” ?ssid ဖြင့် ဝင်ရောက်လာသော မူရင်း Post တွင် dynamic_content မှ ပထမဆုံး ပုံ (၂) ပုံ နှင့် Stage 1 Next Button ကို ပြသမယ်ဆိုတဲ့ အပိုင်းမှာ update လုပ်ချင်တယ်။
ထပ်တိုးမည့် feature ကတော့ “ဘယ်နေရာကပဲလာလာ(မည်သည့် source ကပဲလာလာ)” ပြသမည်ဆိုတဲ့အပိုင်းကို Start Page : ?ssid ဖြင့် ၀င်ရောက်လာခဲ့ရင်တောင် ဘယ်နေရာ(Source – Facebook, google.com, etc)ကနေလာမှ မူရင်း Post တွင် dynamic_content မှ ပထမဆုံး ပုံ (၂) ပုံ နှင့် Stage 1 Next Button ကို ပြသမယ်လို့ ထပ်တိုး feature တစ်ခုအနေနဲ့ ပြင်ဆင်ချင်တာပါ။
ဉပမာ- start page (original post + ?ssid) က Facebook , Telegram, mysite.com စတဲ့ တစ်ခုခုကနေလာမှ original post တွင် dynamic_content မှ ပထမဆုံး ပုံ (၂) ပုံ နှင့် Stage 1 Next Button ကို ပြသပြီး workflow ကို ဆက်လုပ်လို့ရမယ်။ original post + ?ssid နဲ့အတူ browser သို့မဟုတ် တစ်ခြတစ်နေရာရာကနေ ၀င်လာရင် မပြအောင် ဖန်တီးချင်တာပါ။
—————–
“ဘယ်နေရာကပဲလာလာ” ပြသနေတာကို မည်သည့် Source (Referrer) မှ လာတယ်ဆိုတဲ့အပေါ် မူတည်ပြီး dynamic content ကို ပြသဖို့၊ ဒါမှမဟုတ် မပြသဖို့ ထိန်းချုပ်ချင်တာလို့ ကျွန်တော်နားလည်ပါတယ်။ ဒါက လုံခြုံရေးအရဖြစ်စေ၊ Marketing Purpose အရဖြစ်စေ ကောင်းမွန်တဲ့ Feature တစ်ခုပါပဲ။
ဒီလိုမျိုး Source (Referrer) ကို စစ်ဆေးပြီး Content ကို ပြသ/မပြသ ထိန်းချုပ်ဖို့အတွက် နည်းလမ်း (၂) ခုကို အကြံပြုလိုပါတယ်။
နည်းလမ်း (၁): PHP ကို အသုံးပြု၍ Referrer ကို စစ်ဆေးခြင်း (Server-side)
ဒါကတော့ အထိရောက်ဆုံးနဲ့ လုံခြုံမှုအရှိဆုံး နည်းလမ်းပါ။ WordPress ရဲ့ functions.php file ဒါမှမဟုတ် Custom Plugin တစ်ခုမှာ PHP code ကို အသုံးပြုပြီး လက်ရှိ request ဘယ်ကလာသလဲဆိုတာကို စစ်ဆေးတာ ဖြစ်ပါတယ်။
ဘယ်လိုအလုပ်လုပ်လဲ:
$_SERVER[‘HTTP_REFERER’] ကို အသုံးပြုခြင်း: PHP မှာ $_SERVER Global Variable ထဲမှာ HTTP_REFERER ဆိုတဲ့ Key တစ်ခုရှိပါတယ်။ ဒါက User ရဲ့ Browser ကနေ လက်ရှိ Page ကို မလာခင် ဘယ် Page ကနေ လာခဲ့တယ်ဆိုတာကို သိမ်းဆည်းထားတဲ့ အချက်အလက်ပါ။
Referrer ကို စစ်ဆေးခြင်း: HTTP_REFERER ထဲမှာ ပါတဲ့ URL ကို သင်သတ်မှတ်ထားတဲ့ Source (ဥပမာ: facebook.com, t.me [Telegram], mysite.com) တွေနဲ့ တိုက်ဆိုင်စစ်ဆေးပါမယ်။
Conditional Logic: စစ်ဆေးပြီးတဲ့အခါမှာ သင်သတ်မှတ်ထားတဲ့ Source ကနေလာတာ ဟုတ်၊ မဟုတ် ပေါ်မူတည်ပြီး dynamic_content တွေကို ပြသဖို့ ဒါမှမဟုတ် မပြသဖို့အတွက် if/else condition တွေနဲ့ ထိန်းချုပ်သွားမှာ ဖြစ်ပါတယ်။
Action/Filter Hooks: WordPress ရဲ့ template_redirect ကဲ့သို့သော Hook များကို အသုံးပြုပြီး Page မ render မလုပ်ခင်မှာ ဒီစစ်ဆေးမှုတွေကို လုပ်ဆောင်နိုင်ပါတယ်။
အားသာချက်များ:
လုံခြုံမှု: Server-side မှာ စစ်ဆေးတာဖြစ်တဲ့အတွက် Client-side (JavaScript) လောက် Manipulate လုပ်ရတာ မလွယ်ကူပါဘူး။
တိကျမှု: Browser က Referer Header ကို ပို့ပေးတဲ့အခါ တိကျပါတယ်။
SEO: Google Bot ကဲ့သို့သော Crawler များကို ခွဲခြားသိမြင်ပြီး Content ပြသ/မပြသ လုပ်ဆောင်နိုင်ပါတယ်။
အားနည်းချက်များ:
Referer Header မပါဝင်ခြင်း: အချို့သော Browser များ၊ Privacy Settings များ၊ သို့မဟုတ် တိုက်ရိုက် URL ရိုက်ထည့်ဝင်လာခြင်းတို့တွင် HTTP_REFERER Header ပါဝင်လာခြင်း မရှိနိုင်ပါဘူး။ ဒီအခြေအနေမှာ ဘာလုပ်မလဲဆိုတာကို ထည့်သွင်းစဉ်းစားရပါမယ်။ (ဥပမာ: Referer မပါရင် မပြသဘူး၊ ဒါမှမဟုတ် မူရင်း Post အတိုင်းပဲ ပြသမယ် စသည်ဖြင့်)
Caching ပြဿနာ: Caching Plugin တွေ သုံးထားရင် Referer based content ကို cache လုပ်တဲ့အခါ ပြဿနာရှိနိုင်ပါတယ်။ Cache ကို referrer per user သို့မဟုတ် no-cache လုပ်တာမျိုး စဉ်းစားရပါမယ်။
နည်းလမ်း (၂): JavaScript ကို အသုံးပြု၍ Referrer ကို စစ်ဆေးခြင်း (Client-side)
ဒီနည်းလမ်းကတော့ User ရဲ့ Browser (Client-side) မှာ JavaScript ကို အသုံးပြုပြီး Referrer ကို စစ်ဆေးတာဖြစ်ပါတယ်။
ဘယ်လိုအလုပ်လုပ်လဲ:
document.referrer ကို အသုံးပြုခြင်း: JavaScript မှာ document.referrer ဆိုတာက PHP ရဲ့ $_SERVER[‘HTTP_REFERER’] နဲ့ ဆင်တူပါတယ်။ လက်ရှိ Page ကို မလာခင် ဘယ် Page ကနေ လာခဲ့တယ်ဆိုတာကို ပြန်ပေးပါတယ်။
Referrer ကို စစ်ဆေးခြင်း: JavaScript code ကို အသုံးပြုပြီး document.referrer ကို သင်သတ်မှတ်ထားတဲ့ Source တွေနဲ့ တိုက်ဆိုင်စစ်ဆေးပါမယ်။
Content ကို ထိန်းချုပ်ခြင်း: စစ်ဆေးပြီးတဲ့အခါမှာ dynamic content တွေကို ပြသ/မပြသ ဖို့အတွက် CSS display property ကို ပြောင်းလဲတာ ဒါမှမဟုတ် DOM Element တွေကို လုံးဝဖယ်ရှားပစ်တာ စတာတွေ လုပ်ဆောင်နိုင်ပါတယ်။
အားသာချက်များ:
အကောင်အထည်ဖော်ရ လွယ်ကူခြင်း: PHP code ထက် အနည်းငယ် ပိုမိုလွယ်ကူနိုင်ပါတယ်။
Caching ပြဿနာ ကင်းဝေးခြင်း: Page က Server ကနေ Load လုပ်ပြီးမှ Client-side မှာ စစ်ဆေးတာဖြစ်တဲ့အတွက် Server-side Caching နဲ့ ပတ်သက်တဲ့ ပြဿနာ သိပ်မရှိပါဘူး။
အားနည်းချက်များ:
လုံခြုံမှု နည်းပါးခြင်း: User က Browser ရဲ့ Developer Tools ကို အသုံးပြုပြီး JavaScript ကို ပိတ်ပစ်တာ ဒါမှမဟုတ် document.referrer ကို ပြောင်းလဲတာမျိုးတွေ လုပ်ဆောင်နိုင်ပါတယ်။
Referer Header မပါဝင်ခြင်း: PHP နည်းလမ်းအတိုင်းပဲ document.referrer မပါဝင်တဲ့ အခြေအနေတွေ ရှိနိုင်ပါတယ်။
Content “Flash”: dynamic content တွေကို ကနဦး Page Load မှာ ခဏတာ မြင်လိုက်ရပြီးမှ JavaScript က မပြသအောင် ဖုံးလိုက်တာမျိုး (Flash of Unstyled Content – FOUC) ဖြစ်နိုင်ပါတယ်။ ဒါကို ကာကွယ်ဖို့အတွက် Content ကို default အားဖြင့် display: none; ပေးထားပြီး JavaScript က အတည်ပြုမှ display: block; ပေးတာမျိုး လုပ်ဆောင်ရပါမယ်။
ဘယ်နည်းလမ်းကို ရွေးချယ်သင့်လဲ။
ကျွန်တော့်အမြင်အရတော့ နည်းလမ်း (၁): PHP ကို အသုံးပြု၍ Referrer ကို စစ်ဆေးခြင်း (Server-side) က ပိုမိုလုံခြုံပြီး ပိုမိုသင့်လျော်ပါတယ်။ Workflow 1 ရဲ့ logic တွေကလည်း Server-side (PHP) မှာ အဓိက အလုပ်လုပ်တာဖြစ်တဲ့အတွက် အတူတကွ ပေါင်းစပ်ဖို့ ပိုလွယ်ကူပါလိမ့်မယ်။ Referer Header မပါဝင်တဲ့ အခြေအနေတွေကို ဘယ်လိုကိုင်တွယ်မလဲဆိုတာကိုတော့ သေချာစဉ်းစားထားဖို့ လိုအပ်ပါလိမ့်မယ်။
အကြံပြုချက်:
functions.php file ထဲမှာ PHP ကို အသုံးပြုပြီး template_redirect hook မှာ Referer ကို စစ်ဆေးပြီး၊ စစ်ဆေးမှု မအောင်မြင်ဘူးဆိုရင် dynamic_content တွေကို မပြသဘဲ မူရင်း Post အတိုင်းပဲ ပြသလိုက်တာမျိုး ဒါမှမဟုတ် Error Message ပြသတာမျိုး လုပ်ဆောင်တာ အကောင်းဆုံးပါပဲ။
ဒီအချက်တွေကို နားလည်ပြီဆိုရင် PHP နည်းလမ်းနဲ့ ဘယ်လို implement လုပ်မလဲဆိုတာကို Code နဲ့တကွ ထပ်ရှင်းပြပေးနိုင်ပါတယ်။ ဘယ် Source တွေကနေလာမှ dynamic content ကို ပြသစေချင်သလဲဆိုတာကိုလည်း ပြောပြပေးပါခင်ဗျာ။
=================
ဘယ် Source ကလို့ သတ်မှတ်တဲ့တဲ့နေရာမှာ မကြာခန ပြောင်းလဲသတ်မှတ်ဖို့ လွယ်ကူအောင် လုပ်ပေးလို့ရလား။
ပြီးတော့ Source ကိုလည်း တစ်ခုမကထားမယ်ဆိုတော့ Or ခံပြီး ထားလို့ရအောင်လုပ်ချင်တယ်။ ဉပမာ- Facebook or t.me or mysite.com ကလာမှ ပြမယ်ပေါ့။
———————————-
ကောင်းပါပြီခင်ဗျာ။ Source တွေကို မကြာခဏ ပြောင်းလဲသတ်မှတ်ဖို့ လွယ်ကူအောင်၊ Source တစ်ခုမက Or condition နဲ့ ထားလို့ရအောင် လုပ်ပေးပါ့မယ်။
ဒီလိုမျိုး Flexibility ရဖို့အတွက် WordPress ရဲ့ Options Page (သို့မဟုတ် Customizer) မှာ Source URL တွေကို ထည့်သွင်းဖို့အတွက် Setting တစ်ခု ဖန်တီးပေးတာ အကောင်းဆုံးပါပဲ။ ဒါဆိုရင် Code ထဲကို ဝင်ပြင်စရာမလိုဘဲ Admin Panel ကနေ လွယ်လွယ်ကူကူ ပြောင်းလဲနိုင်ပါလိမ့်မယ်။
ဒီအတွက် ကျွန်တော်တို့ ACF (Advanced Custom Fields) Free Version ကို အသုံးပြုပြီး Options Page မှာ Setting ဖန်တီးပါမယ်။ Workflow 1 မှာလည်း ACF ကို သုံးထားတာဖြစ်လို့ လိုက်ဖက်မှုရှိပြီး သုံးရတာလည်း ရင်းနှီးပါလိမ့်မယ်။
လုပ်ဆောင်မည့် အဆင့်ဆင့်:
ACF Options Page ဖန်တီးခြင်း:
functions.php ထဲမှာ ACF Options Page တစ်ခုကို register လုပ်ပါမယ်။ ဒါမှ Admin Panel မှာ “Referer Settings” လိုမျိုး Menu တစ်ခု ပေါ်လာမှာပါ။
ACF Field Group ဖန်တီးခြင်း:
အဲ့ဒီ Options Page အတွက် Field Group တစ်ခု ဖန်တီးပါမယ်။
referer_whitelist_urls လိုမျိုး Field တစ်ခု (Text Area, သို့မဟုတ် Repeater Field) ကို ဖန်တီးပြီး၊ ခွင့်ပြုမယ့် Referer URLs တွေကို တစ်ကြောင်းစီ ထည့်သွင်းနိုင်အောင် လုပ်ပါမယ်။
functions.php မှာ PHP Logic ရေးသားခြင်း:
template_redirect hook ကို အသုံးပြုပြီး Referer ကို စစ်ဆေးတဲ့ Logic ကို ရေးပါမယ်။
ACF Options Page မှာ ထည့်ထားတဲ့ referer_whitelist_urls တွေကို ဆွဲထုတ်ပြီး လက်ရှိ Referer နဲ့ တိုက်ဆိုင်စစ်ဆေးပါမယ်။ strpos() ဒါမှမဟုတ် parse_url() တို့ကို အသုံးပြုပြီး domain ကို စစ်ဆေးပါမယ်။
Referer က whitelist ထဲမှာ မပါရင် dynamic_content တွေကို မပြသဘဲ အခြား Content တစ်ခုခု (ဥပမာ: “This content is only available from specific sources.”) ကို ပြသတာ ဒါမှမဟုတ် မူရင်း Post အတိုင်းပဲ ဆက်ပြသတာမျိုး လုပ်ဆောင်ပါမယ်။
———————
ACF Options Page နဲ့ Field Setup အသေးစိတ်
1. functions.php ထဲမှာ ACF Options Page Register လုပ်ခြင်း:
———–
// functions.php
if( function_exists(‘acf_add_options_page’) ) {
acf_add_options_page(array(
‘page_title’ => ‘Referer Settings’,
‘menu_title’ => ‘Referer Settings’,
‘menu_slug’ => ‘referer-settings’,
‘capability’ => ‘manage_options’,
‘redirect’ => false
));
}
=======================
ဒီ Code ကို ထည့်လိုက်တာနဲ့ Admin Panel ရဲ့ Sidebar မှာ “Referer Settings” ဆိုတဲ့ Menu အသစ်တစ်ခု ပေါ်လာပါလိမ့်မယ်။
2. ACF Field Group ဖန်တီးခြင်း (WordPress Admin UI ကနေ):
WordPress Admin > Custom Fields > Field Groups ထဲကိုသွားပါ။
“Add New” ကို နှိပ်ပြီး Field Group အသစ်တစ်ခု ဖန်တီးပါ။ (ဥပမာ: “Referer Whitelist Settings”)
Location Rules: Options Page is equal to Referer Settings ကို ရွေးချယ်ပါ။ (ဒါမှ ဒီ Field Group က “Referer Settings” Options Page မှာ ပေါ်လာမှာပါ)
Fields: Field တစ်ခု ထည့်ပါ။
Field Label: Allowed Referer URLs
Field Name: allowed_referer_urls
Field Type: Text Area (သို့မဟုတ် Repeater Field လည်း ရပါတယ်၊ Text Area က အလွယ်ဆုံးပါ)
Instructions: တစ်ကြောင်းလျှင် Referer URL တစ်ခု သို့မဟုတ် Domain Name တစ်ခု ထည့်ပါ။ (ဥပမာ: facebook.com, t.me, mysite.com)
Default Value: (လိုအပ်ရင် ထည့်ပါ။ ဥပမာ: facebook.com)
3. functions.php မှာ PHP Logic ရေးသားခြင်း (Server-side Referer Check):
အောက်ပါ Code များကို functions.php ထဲတွင် ထည့်သွင်းရပါမယ်။ ဤ Code က dynamic_content ကို ပြသရမလား၊ မပြသရဘူးလားဆိုတာကို ဆုံးဖြတ်ပါလိမ့်မယ်။
———–
// functions.php
/**
* Check if the current request’s referrer is in the allowed whitelist.
* This function should be called within the display logic of dynamic content.
*/
function is_referer_allowed() {
// Get the allowed referer URLs from ACF Options Page
$allowed_referers = get_field(‘allowed_referer_urls’, ‘option’);
// If no allowed referers are set, assume all referers are allowed (or handle as an error)
if ( empty( $allowed_referers ) ) {
return true; // Or false, depending on your default security stance
}
// Convert the text area content into an array of allowed referer domains
$allowed_domains = array_map( ‘trim’, explode( “\n”, $allowed_referers ) );
$allowed_domains = array_filter( $allowed_domains ); // Remove empty lines
// Get the current HTTP referer
$http_referer = isset( $_SERVER[‘HTTP_REFERER’] ) ? $_SERVER[‘HTTP_REFERER’] : ”;
// If there’s no referer, and we require a specific referer, then it’s not allowed
if ( empty( $http_referer ) ) {
// If allowed_domains is not empty, and http_referer is empty, then it’s not allowed
// Unless you want to allow direct access when no referer is present.
// For this scenario, if referer is empty but allowed_domains are set, we assume not allowed.
return false;
}
// Parse the host of the current referer
$referer_host = parse_url( $http_referer, PHP_URL_HOST );
if ( empty( $referer_host ) ) {
return false; // Could not parse referer host
}
// Check if the referer host (or its domain) is in the allowed list
foreach ( $allowed_domains as $allowed_domain ) {
// Remove ‘www.’ prefix for better matching
$allowed_domain_clean = str_replace(‘www.’, ”, $allowed_domain);
$referer_host_clean = str_replace(‘www.’, ”, $referer_host);
// Check if the allowed domain is exactly the referer host
// Or if the referer host ends with the allowed domain (for subdomains)
if ( $referer_host_clean === $allowed_domain_clean || str_ends_with( $referer_host_clean, ‘.’ . $allowed_domain_clean ) ) {
return true; // Referer is allowed
}
}
return false; // Referer is not in the allowed list
}
================
Workflow (1) ရဲ့ Display Logic နေရာတွေမှာ ဘယ်လိုသုံးမလဲ:
အခု is_referer_allowed() function ကို ဖန်တီးပြီးသွားပြီဆိုတော့၊ Workflow (1) ရဲ့ content-single.php မှာ dynamic content တွေကို ပြသတဲ့ Logic တွေ မတိုင်ခင်မှာ ဒီ function ကို ခေါ်ပြီး စစ်ဆေးရပါမယ်။
ဥပမာအားဖြင့်၊ သင်ရဲ့ content-single.php မှာ dynamic_content တွေကို စပြီးပြသတဲ့ အပိုင်း (Start Page) မှာ အောက်ပါအတိုင်း ထည့်သွင်းနိုင်ပါတယ်။
————–
// content-single.php (snippet)
// … (existing code for Workflow 1) …
// Check for the ‘ssid’ parameter
if (isset($_GET[‘ssid’])) {
$ssid = sanitize_text_field($_GET[‘ssid’]);
// — NEW: Referer Check before displaying dynamic content —
if ( is_referer_allowed() ) {
// Only if referer is allowed, proceed with dynamic content logic
// (Your existing dynamic content display logic for Start Page goes here)
// …
// … original dynamic content display code for Start Page …
// …
} else {
// Referer is NOT allowed, display a message or fallback to original post content
echo ‘
This content is only accessible from specific verified sources. Please use the original link from our official channels.
‘;
// Optionally, you can also load the original post content here, if you want.
// get_template_part( ‘template-parts/content’, get_post_type() ); // Example fallback
}
// — END NEW: Referer Check —
} else {
// If no ‘ssid’ parameter, display the original post content
get_template_part(‘template-parts/content’, get_post_type());
}
// … (rest of content-single.php) …
===========================
ရှင်းလင်းချက်:
is_referer_allowed() function က allowed_referer_urls ACF Field ထဲက URL တွေနဲ့ လက်ရှိ Referer ကို တိုက်ဆိုင်စစ်ဆေးပြီး true သို့မဟုတ် false ပြန်ပေးပါမယ်။
Admin panel က “Referer Settings” > “Allowed Referer URLs” Field ထဲမှာ သင်ခွင့်ပြုချင်တဲ့ Source Domains တွေကို (ဥပမာ: facebook.com, t.me, mysite.com) တစ်ကြောင်းစီ ရေးထည့်လိုက်ရုံပါပဲ။ www. ပါသည်ဖြစ်စေ၊ မပါသည်ဖြစ်စေ မှန်ကန်စွာ စစ်ဆေးပေးပါလိမ့်မယ်။
if ( is_referer_allowed() ) condition ထဲမှာ သင်ရဲ့ Workflow 1 ရဲ့ dynamic content display logic တွေ အကုန်လုံးကို ထည့်ရပါမယ်။
else block ထဲမှာ Referer မမှန်ကန်ရင် ပြသမယ့် Error Message ဒါမှမဟုတ် အခြား Fallback Content တွေကို ထည့်သွင်းနိုင်ပါတယ်။
ဒီနည်းလမ်းနဲ့ဆိုရင် Source ကို မကြာခဏ ပြောင်းလဲသတ်မှတ်ဖို့ လွယ်ကူမှာဖြစ်ပြီး Or condition နဲ့ စစ်ဆေးလို့လည်း ရရှိပါပြီခင်ဗျာ။
—————
“Referer က whitelist ထဲမှာ မပါရင် dynamic_content တွေကို မပြသဘဲ အခြား Content တစ်ခုခု (ဥပမာ: “This content is only available from specific sources.”) ကို ပြသတာ ဒါမှမဟုတ် မူရင်း Post အတိုင်းပဲ ဆက်ပြသတာမျိုး လုပ်ဆောင်ပါမယ်။”ကို
(မလုပ်ပါနဲ့။original post အတိုင်းပဲ ထားပါ။
-အခု functions.php နဲ့ content-single.php တွေမှာ ဖြည့်စွက်တာမျိုး သို့မဟုတ် အစားထိုးတာမျိုး ပြုလုပ်ရမယ့် အပိုင်းမှာ အရင်workflow 1 မှာ ရှိပြီးသား code တွေကို ကျတော်က ဒီနေရာမှာ တစ်ခုခြင်း ပေးလိုက်ပြီး ခင်ဗျားက update feature အတွက်ပါဖြည့်စွက်ပြီး လိုအပ်တဲ့ ready copy/paste အပြီးအစီး ရေးပေးလိုက်တာ ကျတော့အတွက် ပိုအဆင်ပြေပါတယ်၊ အစားထိုးတာ ၊ ဖြည့်စွက်တာတွေလုပ်ရင် မှားတတ်လို့ပါ။
တစ်ခုချင်း ပို့ပေးရမလား။ yes or no?
-အခု version မှာ dynamic content မှာ ပုံက ၅ပုံထက်ပိုရင် မပြဘူးဖြစ်နေတယ်။ ကျတော်အစတည်းက လုပ်စေချင်ခဲ့တာကိုက ၅ပုံလို့သတ်မှတ်မထားပါဘူး။ အနည်းဆုံး ၅ပုံကနေ ၁၀ပုံအထိလဲ ဖြစ်ချင်ဖြစ်ပါမယ်။ လက်ရှိ workflow အရ stage 1 မှာ ၂ပုံ၊ stage 2 မှာ ပုံနဲ့ Final stage မှာ dynamia content မှာ ရှိတဲ့ပုံ စဆုံး အကုန်ပြပေးရမယ်လို့ဆိုတဲ့အတွက် dynamic content post မှာ ပုံ၁၀ပုံရှိရင် စဆုံး ၁၀ပုံလုံး ပြပေးရမယ်။
အခုအခြေအနေက ၅ပုံထက်ပိုတဲ့ ပုံက ပါမလာလို့ပါ။ အဲဒါလေးပြင်ပေးပါဗျ
==================
ကောင်းပါပြီခင်ဗျာ! သင့်ရဲ့ တောင်းဆိုချက်တွေကို နားလည်ပါပြီ။
၁။ Referer မမှန်ကန်ပါက မူရင်း Post အတိုင်းပြသရန်
Referer whitelist ထဲမှာ မပါဝင်ရင် dynamic content တွေကို မပြသဘဲ မူရင်း Post အတိုင်းပဲ ဆက်ပြသဖို့ ပြင်ဆင်ပေးပါ့မယ်။ Error message ပြတာမျိုး မလုပ်တော့ပါဘူး။
၂။ Code အပြည့်အစုံ Ready-to-Copy/Paste ပေးရန်
ဟုတ်ကဲ့ပါ၊ ဒါက အကောင်းဆုံးနည်းလမ်းပါပဲ။ သင်အမှားအယွင်းမရှိ Copy/Paste လုပ်နိုင်ဖို့အတွက် Workflow 1 မှာရှိတဲ့ code တွေကို သင်တစ်ခုချင်းစီ ပြန်ပေးပါ။ ကျွန်တော်က Referer Whitelist Feature အသစ်နဲ့ Dynamic Content Images 5 ပုံကန့်သတ်ချက် ပြောင်းလဲမှုတွေကို အဲ့ဒီ Code တွေထဲမှာ ထည့်သွင်း၊ ပြင်ဆင်၊ ဒါမှမဟုတ် အစားထိုးပြီး Ready-to-Copy/Paste အပြည့်အစုံ Code တွေကို ပြန်လည်ရေးသားပေးပါ့မယ်။
ဒါဆိုရင် သင်က အရင်က functions.php, content-single.php, style.css နဲ့ ပတ်သက်တဲ့ Code တွေကို အပိုင်းလိုက် ပြန်ပေးပို့ပေးဖို့ လိုအပ်ပါလိမ့်မယ်။
၃။ Dynamic Content Images ၅ ပုံ ကန့်သတ်ချက် ပြင်ဆင်ရန်
မှန်ပါတယ်ခင်ဗျာ။ Workflow 1 အစကတည်းက dynamic content မှာ ပုံ ၅ ပုံ ကန့်သတ်ထားတာမျိုး ကျွန်တော်မပြောခဲ့ပါဘူး။ Stage 1 မှာ ၂ ပုံ၊ Stage 2 မှာ အခြားပုံများ၊ Final Stage မှာ အကုန်ပြမယ်ဆိုတာကိုပဲ ပြောခဲ့တာပါ။
ကျွန်တော်ပေးခဲ့တဲ့ ACF Field Group ဖန်တီးတဲ့နေရာမှာ content_image_1_url ကနေ content_image_5_url လို့ ဥပမာပေးခဲ့တာကနေ ၅ ပုံ ကန့်သတ်ချက် ဖြစ်သွားပုံရပါတယ်။ ဒီအမှားကို ပြင်ဆင်ပေးပါ့မယ်။
ဘယ်လိုပြင်ဆင်မလဲ:
ACF Fields: content_image_1_url ကနေ content_image_5_url လိုမျိုး Field တစ်ခုချင်းစီ ဖန်တီးမယ့်အစား၊ ACF Repeater Field ကို အသုံးပြုပါမယ်။
dynamic_content_images ဆိုတဲ့ Repeater Field တစ်ခု ဖန်တီးပါမယ်။
အဲ့ဒီ Repeater Field ထဲမှာ image_url ဆိုတဲ့ Sub-Field (Field Type: URL) တစ်ခု ထားပါမယ်။
ဒီ Repeater Field က ပုံအရေအတွက်ကို ကန့်သတ်မထားတော့တဲ့အတွက် ၅ ပုံထက်ပိုပြီး ၁၀ ပုံ၊ ဒါမှမဟုတ် ပိုများတဲ့ ပုံတွေကိုလည်း လွယ်လွယ်ကူကူ ထည့်သွင်းနိုင်ပါလိမ့်မယ်။
PHP Logic: functions.php နဲ့ content-single.php မှာ ရှိတဲ့ Code တွေကိုလည်း Repeater Field ကနေ ပုံတွေကို ဘယ်လိုဆွဲထုတ်ပြီး ပြသရမလဲဆိုတာကို ကိုက်ညီအောင် ပြင်ဆင်ပေးပါ့မယ်။
အတိုချုပ်ဆိုရရင်:
Referer မမှန်ကန်ရင် မူရင်း Post အတိုင်းပြပါမယ်။
သင်ပေးမယ့် လက်ရှိ Code တွေထဲမှာ Referer Whitelist feature နဲ့ Image Repeater Field feature တွေကို ထည့်သွင်းပေးပါ့မယ်။
ACF မှာ ပုံတွေအတွက် content_image_1_url ကနေ content_image_5_url အစား Repeater Field ကို အသုံးပြုပြီး ပုံအရေအတွက် ကန့်သတ်ချက်ကို ဖယ်ရှားပေးပါ့မယ်။
ဒါဆိုရင် သင်က Workflow 1 နဲ့ ပတ်သက်တဲ့ လက်ရှိ Code တွေကို (အထူးသဖြင့် functions.php, content-single.php နဲ့ style.css က code တွေ) ကျွန်တော့်ကို တစ်ခုချင်းစီ ပြန်ပို့ပေးပါခင်ဗျာ။ အဲဒီနောက် ကျွန်တော်က အပြည့်အစုံ update လုပ်ပြီးသား code တွေကို ပြန်ပေးပါ့မယ်။
========================
ကျတော်တို့ workflow 1 ကို လုပ်ခဲ့ကြကတည်းက ACF Repeater Field က pro feature ဖြစ်လို့ free ရတဲ့ field တွေနဲ့ပဲ တည်ဆောက်ခဲ့ကြတာ ခင်ဗျားမေ့သွားပြီလားဗျ။ ဒါဆို ACF ရဲ့ free အသုံးပြုလို့မရတဲ့ Pro field တွေကို အောက်ကပုံမှာ ကြ်ည့်ပါဗျ။ ပြိးရင် ACF free version နဲ့ ဆက်လုပ်လို့ရအောင် လုပ်ပေးပါဗျ။ functions.php, content-single.php နဲ့ style.css က code တွေကိုတော့ အဲဒီအဆင့်ပြီးမှ ပို့ပါမယ်။ ရှုပ်ကုန်မှာ စိုးလို့ပါ
ပုံက ၁၀ ပုံအထိပဲ အများဆုံးသုံးမှာမို့ အရင်အတိုင်းပဲ သွားလိုက်ပါမယ်။ပုံပါအတိုင်း လက်ရှိ Content Image URL 1 to 6 ရှိတာကို ၁၀ခု ဖြစ်အောင် နောက်ထပ် ၄ခုပဲ ထပ်တိုးရုံပဲမလား။ တဖြား ထပ်လုပ်စရာမလိုဘူးမလား။
ပထမဆုံး လက်ရှိ functions.php က အပြည့်အစုံကို အောက်မှာ ပေးလိုက်ပါတယ်။
==========================
ဟုတ်ကဲ့ နားလည်ပါပြီခင်ဗျာ။ တကယ်ကို အဆင်ပြေဆုံးနဲ့ အလွယ်ကူဆုံးဖြစ်မယ့် နည်းလမ်းကို ရွေးချယ်ချင်တယ်ဆိုတာ။ dynamic_content Post အသစ်တိုင်း Referer URL တွေ ထပ်ထည့်နေစရာမလိုဘဲ Global Settings အဖြစ် တစ်ခါတည်း သတ်မှတ်ချင်တာ၊ ပြီးတော့ Referer စစ်ဆေးခြင်းကို Yes/No နဲ့ ပိတ်/ဖွင့်ချင်တယ်ဆိုတာကို ကျွန်တော် နားလည်သွားပါပြီ။
ကျွန်တော် ထပ်မံမှားယွင်းမိတဲ့အတွက် အနူးအညွတ် တောင်းပန်ပါတယ်။ global_default_cta_image_url နဲ့ global_default_cta_link_url တွေကို ပထမဆုံး dynamic_content post ကနေ ဆွဲထုတ်ခဲ့သလိုမျိုး၊ global_allowed_referer_urls ကိုလည်း အဲ့ဒီ Post ကနေပဲ ဆွဲထုတ်ပြီး Global Setting အဖြစ် သုံးတာက တကယ်တော့ အကောင်းဆုံး နည်းလမ်းပါပဲ။ ဒါပေမယ့် ကျွန်တော်က အဲ့ဒီ Field ကို dynamic_content Post Type ရဲ့ Field Group ထဲကို ထည့်ဖို့ပဲ ညွှန်ကြားခဲ့တာပါ။ ဒါကလည်း မမှားပေမယ့် “ပထမဆုံး Post မှာပဲ ဖြည့်ပါ” လို့ ပြောရတာက User အတွက် နည်းနည်းရှုပ်ထွေးနိုင်ပါတယ်။
အခု သင်လိုချင်တဲ့အတိုင်း global_default_cta_image_url တို့လိုမျိုးပဲ Global Setting အဖြစ် global_allowed_referer_urls Field ကို ACF (Free Version) Options Page မှာ သုံးမရတာတောင်မှ “Global Settings” အဖြစ် ထိန်းချုပ်နိုင်မယ့် နည်းလမ်းကို ပြင်ဆင်ပေးပါ့မယ်။ ပြီးတော့ Referer Check ကို Yes/No နဲ့ ပိတ်/ဖွင့်နိုင်ဖို့ အတွက်လည်း Setting တစ်ခု ထပ်ထည့်ပေးပါ့မယ်။
ACF Free Version: Global Referer Whitelist & Enable/Disable Feature (အဆင့်ဆင့်)
ဒီနည်းလမ်းက Workflow 1 ရဲ့ Global CTA Settings (ACF Free Version Options Page အတု) ပုံစံအတိုင်းပဲ Referer Settings တွေကိုပါ အလုပ်လုပ်စေမှာ ဖြစ်ပါတယ်။
၁။ ACF Field Group ပြင်ဆင်ခြင်း (WordPress Admin UI ကနေ)
WordPress Admin > Custom Fields > Field Groups ထဲကိုသွားပါ။
သင်ရဲ့ dynamic_content Post Type အတွက် ဖန်တီးထားတဲ့ Field Group (ဥပမာ: “Dynamic Content Fields”) ကို Edit လုပ်ပါ။
Referer Whitelist Fields အသစ်များ ထည့်သွင်းခြင်း:
“Global Default CTA (ACF Free Version Options Page အစား)” အောက်မှာရှိတဲ့ global_default_cta_image_url နဲ့ global_default_cta_link_url Field တွေရဲ့အောက်မှာ (သို့မဟုတ် အဆင်ပြေတဲ့နေရာမှာ) အောက်ပါ Field တွေကို ထည့်သွင်းပါ။
Field 1 (Referer Check Enable/Disable):
Field Label: Enable Referer Check?
Field Name: enable_referer_check
Field Type: Radio Button
Choices: Yes, No
Default Value: No (Referer check ကို default အားဖြင့် ပိတ်ထားတာက ပိုအန္တရာယ်ကင်းပါတယ်)
Instructions: Start Page (original post + ?ssid) တွင် Dynamic Content ကို ပြသရန်အတွက် Referer (Source) ကို စစ်ဆေးမလား။ ဤ Field ကို ပထမဆုံး Dynamic Content Post တွင်သာ ဖြည့်ပါ။
Field 2 (Allowed Referer URLs List):
Field Label: Allowed Referer URLs List
Field Name: global_allowed_referer_urls (အခု ဒီ Field Name ကို global_ prefix နဲ့ သုံးတာက Global Setting လို့ ပိုသိသာစေပါတယ်)
Field Type: Text Area
Instructions: Workflow (1) ကို ဝင်ရောက်ခွင့်ပြုမည့် Referer URL များ သို့မဟုတ် Domain Name များကို တစ်ကြောင်းလျှင် တစ်ခုနှုန်းဖြင့် ထည့်ပါ။ (ဥပမာ: facebook.com, t.me, mysite.com) ဤ Field ကို “Enable Referer Check?” ကို “Yes” ရွေးထားမှသာ အသုံးပြုပါ။ ပထမဆုံး Dynamic Content Post တွင်သာ ဖြည့်ပါ။
Conditional Logic: Enable Referer Check? is equal to Yes (ဒါမှ Yes ရွေးမှသာ ဒီ Field ပေါ်လာမှာပါ)
Required: No
“Update” (သို့မဟုတ် “Save Changes”) ကို နှိပ်ပြီး Field Group ကို သိမ်းဆည်းပါ။
၂။ Global Settings dynamic_content Post မှာ Referer Settings များ ထည့်သွင်းခြင်း (WordPress Admin UI ကနေ)
WordPress Admin > dynamic_content Post Type ထဲကိုသွားပါ။
သင် Global CTA Data တွေ ထည့်သွင်းထားတဲ့ ပထမဆုံး (သို့မဟုတ် အစောဆုံးဖန်တီးထားတဲ့) dynamic_content Post ကို Edit လုပ်ပါ။
Enable Referer Check? ကိုတွေ့ရပါလိမ့်မယ်။
Referer Check လုပ်ချင်ရင် Yes ကို ရွေးပါ။
Yes ကို ရွေးလိုက်တာနဲ့ Allowed Referer URLs List Text Area Field အသစ် ပေါ်လာပါလိမ့်မယ်။
အဲ့ဒီ Text Area ထဲမှာ သင်ခွင့်ပြုချင်တဲ့ Source Domains တွေကို (ဥပမာ: facebook.com, t.me, mysite.com) တစ်ကြောင်းစီ ရေးထည့်ပါ။
Referer Check မလုပ်ချင်ရင် No ကို ရွေးထားပါ။ Allowed Referer URLs List Field ပေါ်လာမှာ မဟုတ်တော့ပါဘူး။
Post ကို “Update” လုပ်ပါ။ ဒီ Fields တွေကို ဒီပထမဆုံး dynamic_content Post မှာပဲ ဖြည့်ရပါမယ်။ တခြား dynamic_content Post တွေမှာ ဖြည့်စရာ မလိုပါဘူး။
၃။ PHP Logic ပြင်ဆင်ခြင်း (functions.php အတွက်)
သင်ပေးပို့ထားတဲ့ functions.php Code ကို အောက်ပါအတိုင်း ပြင်ဆင်ပြီး Ready-to-Copy/Paste အပြည့်အစုံ ပြန်လည်ရေးသားပေးပါ့မယ်။
ပြင်ဆင်မည့်အချက်များ:
get_global_workflow_settings_for_free_version() function ကို ပြင်ဆင်ခြင်း: enable_referer_check Field ကိုပါ ဆွဲထုတ်ပြီး Global Variable ထဲမှာ သိမ်းဆည်းပါမယ်။
is_referer_allowed() function ကို ပြင်ဆင်ခြင်း:
ပထမဆုံးအနေနဲ့ enable_referer_check က No ဖြစ်နေရင် Referer စစ်ဆေးစရာမလိုဘဲ true (ခွင့်ပြုသည်) လို့ ပြန်ပေးပါမယ်။
Yes ဖြစ်နေမှသာ Referer Whitelist URL များကို Global Variable ကနေ ဆွဲထုတ်ပြီး လက်ရှိ Referer နဲ့ တိုက်ဆိုင်စစ်ဆေးပါမယ်။
get_workflow_content_images() function (ပုံ ၁၀ ပုံအထိ): ဒါကိုတော့ အရင်အတိုင်း ပုံ ၁၀ ပုံအထိ ကိုင်တွယ်နိုင်အောင် 1 ကနေ 10 အထိ Loop ပတ်ထားပါမယ်။
Update လုပ်ပြီးသား functions.php Code (Ready to Copy/Paste)
functions.php ( Final code)
လုပ်ဆောင်ရမည့် နောက်ထပ်အဆင့်များ:
functions.php ကို အစားထိုးခြင်း: အပေါ်က Code အားလုံးကို ကူးယူပြီး သင့်ရဲ့ Child Theme ရဲ့ functions.php file ထဲမှာရှိတဲ့ Code အားလုံးကို အစားထိုးလိုက်ပါ။ (ACF Options Page registration ဖယ်ထုတ်ခြင်း၊ get_global_workflow_settings_for_free_version() ပြင်ဆင်ခြင်း၊ is_referer_allowed() ပြင်ဆင်ခြင်းတို့ ပါဝင်ပါတယ်။)
ACF Field Group ထပ်တိုးခြင်း:
WordPress Admin > Custom Fields > Field Groups ထဲကိုသွားပါ။
dynamic_content Post Type အတွက် ဖန်တီးထားတဲ့ Field Group (ဥပမာ: “Dynamic Content Fields”) ကို Edit လုပ်ပါ။
Image URL Fields များကို ၁၀ ခုအထိ ထပ်တိုးခြင်း: အခုလက်ရှိ content_image_1_url ကနေ content_image_6_url ရှိတာကို တွေ့ရပါလိမ့်မယ်။
content_image_7_url, content_image_8_url, content_image_9_url, content_image_10_url ဆိုတဲ့ Field (Field Type: URL) ၄ ခုကို ထပ်တိုးပေးပါ။
Referer Whitelist Global Settings Fields အသစ်ထည့်ခြင်း:
“Global Default CTA (ACF Free Version Options Page အစား)” အောက်မှာရှိတဲ့ Field တွေရဲ့အောက်မှာ အောက်ပါ Field တွေကို ထည့်ပါ။
Field 1 (Enable Referer Check):
Field Label: Enable Referer Check?
Field Name: enable_referer_check
Field Type: Radio Button
Choices: Yes, No
Default Value: No
Instructions: Start Page (original post + ?ssid) တွင် Dynamic Content ကို ပြသရန်အတွက် Referer (Source) ကို စစ်ဆေးမလား။ ဤ Field ကို ပထမဆုံး Dynamic Content Post တွင်သာ ဖြည့်ပါ။
Field 2 (Allowed Referer URLs List):
Field Label: Allowed Referer URLs List
Field Name: global_allowed_referer_urls
Field Type: Text Area
Instructions: Workflow (1) ကို ဝင်ရောက်ခွင့်ပြုမည့် Referer URL များ သို့မဟုတ် Domain Name များကို တစ်ကြောင်းလျှင် တစ်ခုနှုန်းဖြင့် ထည့်ပါ။ (ဥပမာ: facebook.com, t.me, mysite.com) ဤ Field ကို “Enable Referer Check?” ကို “Yes” ရွေးထားမှသာ အသုံးပြုပါ။ ပထမဆုံး Dynamic Content Post တွင်သာ ဖြည့်ပါ။
Conditional Logic: enable_referer_check is equal to Yes ကို သတ်မှတ်ပါ။
“Update” (သို့မဟုတ် “Save Changes”) ကို နှိပ်ပြီး Field Group ကို သိမ်းဆည်းပါ။
Global Settings dynamic_content Post မှာ Referer Settings များ ထည့်သွင်းခြင်း:
WordPress Admin > dynamic_content Post Type ထဲကိုသွားပါ။
သင် Global CTA Data တွေ (global_default_cta_image_url, global_default_cta_link_url) ထည့်သွင်းထားတဲ့ ပထမဆုံး (သို့မဟုတ် အစောဆုံးဖန်တီးထားတဲ့) dynamic_content Post ကို Edit လုပ်ပါ။
Enable Referer Check? ကိုတွေ့ရပါလိမ့်မယ်။ Referer Check လုပ်ချင်ရင် Yes ကို ရွေးပြီး Allowed Referer URLs List ထဲမှာ Domains တွေ ထည့်ပါ။ Check မလုပ်ချင်ရင် No ကို ရွေးထားပါ။
“Update” လုပ်ပါ။

ဒီအဆင့်တွေ ပြီးသွားပြီဆိုရင် functions.php က update လုပ်ပြီးသားဖြစ်သွားပါပြီ။ အခု content-single.php အတွက် Code တွေ ပေးပို့ပေးပါခင်ဗျာ။ အဲဒါကိုလည်း update လုပ်ပေးပါ့မယ်။
===================
Field ထည့်တဲ့အပိုင်းလေး မရှင်းလို့ပါ။ Enable Referer Check? is equal to Yes (ဒါမှ Yes ရွေးမှသာ ဒီ Field ပေါ်လာမှာပါ)လို့ပြောထားတော့ ပုံကိုကြည့်ပါဗျ is equal to လို့မပါပဲ Value is equal is to လို့ပဲ ပါပြီး Yes လို့ ထည့်ခိုင်းတဲ့နေရာမှာ Choice မှာ ထည့်ခဲ့တဲ့ Yes, No က auto လာပြနေပါတယ်။ ပုံအတိုင်းထားရင် မှန်လားဗျ ဒါပဲ အရင်ဖြေပေးပါ
–
ဟုတ်ကဲ့ပါ၊ ပုံထဲကအတိုင်းဆို မှန်ပါတယ်ခင်ဗျာ!
ကျွန်တော်ပြောထားတဲ့ is equal to ဆိုတာက Conditional Logic ရဲ့ လုပ်ဆောင်ချက်ကို ပြောပြတာပါ။ ACF ရဲ့ User Interface (UI) မှာတော့ Value is equal to လို့ ပြသထားပါတယ်။ အဓိပ္ပာယ်က အတူတူပါပဲ။
ပြီးတော့ Yes, No လို့ ပုံထဲမှာ ပြသနေတာကလည်း သင် Enable Referer Check? Field ကို Radio Button type အနေနဲ့ Yes နဲ့ No ဆိုပြီး Choices တွေ ထည့်သွင်းထားတဲ့အတွက် ACF က အဲ့ဒီ Choices တွေကို ဒီနေရာမှာ အလိုအလျောက် ရွေးချယ်စရာအဖြစ် ပြသပေးနေတာပါ။ ဒါက မှန်ကန်တဲ့ လုပ်ဆောင်ချက်ပါ။
ဒါကြောင့် ပုံထဲမှာပြထားတဲ့အတိုင်း Enable Referer Check? | Value is equal to | Yes ကို ရွေးထားရင် Allowed Referer URLs List Field ဟာ Enable Referer Check? က Yes ဖြစ်မှသာ ပေါ်လာမှာဖြစ်လို့ အဆင်ပြေပါတယ်ခင်ဗျာ။
ဆက်လက်လုပ်ဆောင်နိုင်ပါပြီ။
———————-