วิธีแปลฟิลด์กำหนดเองของ ACF ใน WordPress – กลุ่มฟิลด์, Repeater, หน้าตัวเลือก
เรียนรู้วิธีแปลฟิลด์กำหนดเองของ ACF ทุกฟิลด์บนเว็บไซต์ WordPress ของคุณเป็นทุกภาษาที่ผู้เยี่ยมชมของคุณใช้ คู่มือนี้ครอบคลุมถึงกลุ่มฟิลด์ (Field Group), Repeater, Flexible Content, ฟิลด์รูปภาพ, หน้าตัวเลือก (Options Page) และป้ายกำกับฟิลด์ ACFML จะส่งฟิลด์ของ ACF และ ACF Pro ผ่านเวิร์กโฟลว์การแปลของ WPML เพื่อให้ได้รับการแปลไปพร้อมกับเนื้อหาโพสต์ของคุณ
ก่อนเริ่มต้น
ติดตั้งและเปิดใช้งานปลั๊กอินเหล่านี้:
- Advanced Custom Fields หรือ ACF Pro
- WPML และ WPML การแปลสตริง
- ACFML (ส่วนเสริมที่ครอบคลุมในหน้านี้)
กลุ่มฟิลด์ของคุณควรได้รับการกำหนดค่าไว้แล้วใน ACF คุณสามารถเปลี่ยนการตั้งค่ากำหนดการแปลของแต่ละฟิลด์ได้ในภายหลัง ดังนั้นลำดับการทำงานจึงไม่มีผลใด ๆ ให้ตั้งค่ากลุ่มฟิลด์ก่อน แล้วจึงกลับมาที่ ACFML
เลือกโหมดการแปลสำหรับแต่ละกลุ่มฟิลด์
กลุ่มฟิลด์ของ ACF ไม่ได้ทำงานเหมือนกันทั้งหมดเมื่อมีการแปล ACFML มีโหมด 3 โหมดสำหรับแต่ละกลุ่มฟิลด์ ซึ่งตั้งค่าได้ใน ACF > กลุ่มฟิลด์ ภายใต้ส่วน Multilingual Setup:
ฟิลด์เหมือนกันในทุกภาษา
การตั้งค่าทั่วไปสำหรับเว็บไซต์ ACF ส่วนใหญ่ แปลค่าของฟิลด์เป็นแต่ละภาษาในขณะที่โครงสร้างยังคงเดิม หน้า ทีมงานของเรา คือตัวอย่างที่ชัดเจน ทีมของคุณจะเหมือนกันในทุกภาษา ดังนั้นชื่อและประวัติของสมาชิกในทีมแต่ละคนจะได้รับการแปลตามภาษาในขณะที่โครงสร้างฟิลด์ยังคงเดิม คุณป้อนข้อมูลทีมในภาษาต้นทาง จากนั้นส่งโพสต์ไปแปลผ่าน WPML > การแปล > แดชบอร์ด ค่าที่แปลแล้วจะกลับมาแนบอยู่กับฟิลด์เดิม
ฟิลด์แตกต่างกันในแต่ละภาษา
ใช้เมื่อแต่ละภาษาแสดงเนื้อหาที่แตกต่างกันอย่างสิ้นเชิงในกลุ่มฟิลด์เดียวกัน กรณีคลาสสิกคือบริษัทที่จัดกิจกรรมในท้องถิ่น หน้า กิจกรรม ภาษาอังกฤษจะแสดงกิจกรรมสำหรับผู้ชมที่ใช้ภาษาอังกฤษ ส่วนหน้าภาษาฝรั่งเศสจะแสดงกิจกรรมสำหรับผู้ชมที่ใช้ภาษาฝรั่งเศส ตั้งค่ากลุ่มฟิลด์เป็น Different fields across languages จากนั้นเปิดโพสต์ที่คุณต้องการปรับให้เข้ากับท้องถิ่น > ในกล่องภาษาทางด้านขวา ให้คลิกไอคอนเครื่องหมายบวกสำหรับภาษาปลายทาง > ฉบับร่างเปล่าจะเปิดขึ้นพร้อมฟิลด์กำหนดเองที่ยังว่างอยู่ > กรอกค่าเฉพาะสำหรับภาษานั้นแล้วเผยแพร่
โหมดผู้เชี่ยวชาญ
ใช้เมื่อคุณต้องการการผสมผสาน: บางฟิลด์แปลตามภาษา บางฟิลด์ยังคงเหมือนเดิม บางฟิลด์คัดลอกครั้งเดียวแล้วจึงแยกจากกัน เลือก Expert Mode ในการตั้งค่ากลุ่มฟิลด์และตั้งค่ากำหนดสำหรับแต่ละฟิลด์ ตัวอย่าง กิจกรรม ที่มีพฤติกรรมแบบผสม: ชื่อเรื่องและคำอธิบายตั้งค่าเป็น แปล ส่วนราคา วันที่ และที่อยู่ตั้งค่าเป็น คัดลอก
การตั้งค่ากำหนดการแปลสำหรับฟิลด์ ACF แต่ละประเภท
ทุกฟิลด์ในกลุ่มฟิลด์จะมีการตั้งค่ากำหนดการแปลหนึ่งในสี่แบบ:
- แปล (Translate) ค่าของฟิลด์จะได้รับการแปลตามภาษา
- คัดลอก (Copy) ค่าของฟิลด์จะซิงค์กันในทุกภาษา เมื่อแก้ไขครั้งเดียว การเปลี่ยนแปลงจะถูกส่งต่อไปยังภาษาอื่น
- คัดลอกครั้งเดียว (Copy Once) ค่าของฟิลด์จะถูกใช้เป็นจุดเริ่มต้นสำหรับการแปล จากนั้นเวอร์ชันของแต่ละภาษาจะสามารถแก้ไขได้อย่างอิสระ
- ไม่แปล (Don't translate) ฟิลด์นี้จะถูกละเว้นในขั้นตอนการแปล
เมื่อคุณเลือก Same fields across languages หรือ Different fields across languages แต่ละฟิลด์จะได้รับการตั้งค่าเริ่มต้นที่เหมาะสมตามประเภทของฟิลด์ ตารางด้านล่างแสดงการตั้งค่าเริ่มต้นเหล่านั้น ใช้ Expert Mode เพื่อลบล้างการตั้งค่าสำหรับแต่ละฟิลด์ หรือใช้ฟิลเตอร์ acfml_field_group_mode_field_translation_preference เพื่อลบล้างการตั้งค่าเริ่มต้นสำหรับประเภทฟิลด์นั้น ๆ ทั่วทั้งไซต์ (ดู ฮุกสำหรับนักพัฒนาเพื่อรองรับกรณีพิเศษ ด้านล่าง)
Repeater และ Flexible Content – คัดลอก หรือ คัดลอกครั้งเดียว
สำหรับฟิลด์ Repeater และ Flexible Content คุณต้องเลือกระหว่างพฤติกรรมระดับแถว 2 แบบก่อนที่การตั้งค่ากำหนดของฟิลด์ย่อยจะเริ่มทำงาน:
- คัดลอก (Copy) เค้าโครงและจำนวนแถวจะเหมือนกันในทุกภาษา นักแปลจะเห็นแถวแบบเดียวกัน ส่วนฟิลด์ย่อยจะได้รับการแปลตามการตั้งค่าของตนเอง
- คัดลอกครั้งเดียว (Copy Once) แต่ละภาษาสามารถมีเค้าโครงและจำนวนแถวที่แตกต่างกันได้หลังจากเริ่มต้นใช้งาน
เลือก คัดลอก เมื่อโครงสร้างเหมือนกันในทุกภาษา (กรณีส่วนใหญ่) เลือก คัดลอกครั้งเดียว เมื่อเวอร์ชันของแต่ละภาษามีโครงสร้างที่แตกต่างกัน (เช่น รายการกิจกรรมที่แตกต่างกันในแต่ละภาษา)
ฟิลด์พื้นฐาน
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Text | แปล | แปล |
| Text Area | แปล | แปล |
| Number | คัดลอก | คัดลอกครั้งเดียว |
| Range | คัดลอก | คัดลอกครั้งเดียว |
| คัดลอก | คัดลอกครั้งเดียว | |
| URL | คัดลอก | คัดลอกครั้งเดียว |
| Password | คัดลอก | คัดลอกครั้งเดียว |
ฟิลด์เนื้อหา
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Image | คัดลอก | คัดลอกครั้งเดียว |
| File | คัดลอก | คัดลอกครั้งเดียว |
| Wysiwyg Editor | แปล | แปล |
| oEmbed | คัดลอก | คัดลอกครั้งเดียว |
| Gallery | คัดลอก | คัดลอกครั้งเดียว |
ฟิลด์ตัวเลือก
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Select | คัดลอก | คัดลอกครั้งเดียว |
| Checkbox | คัดลอก | คัดลอกครั้งเดียว |
| Radio Button | คัดลอก | คัดลอกครั้งเดียว |
| Button Group | คัดลอก | คัดลอกครั้งเดียว |
| True / False | คัดลอก | คัดลอกครั้งเดียว |
ฟิลด์ jQuery
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Google Map | คัดลอก | คัดลอกครั้งเดียว |
| Date Picker | คัดลอก | คัดลอกครั้งเดียว |
| Date Time Picker | คัดลอก | คัดลอกครั้งเดียว |
| Time Picker | คัดลอก | คัดลอกครั้งเดียว |
| Color Picker | คัดลอก | คัดลอกครั้งเดียว |
ฟิลด์เค้าโครง
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Message | แปล | แปล |
| Accordion | คัดลอก | คัดลอกครั้งเดียว |
| Tab | คัดลอก | คัดลอกครั้งเดียว |
| Group | คัดลอก | คัดลอกครั้งเดียว |
| Repeater | คัดลอก | คัดลอกครั้งเดียว |
| Flexible Content | คัดลอก | คัดลอกครั้งเดียว |
| Clone | คัดลอก | คัดลอกครั้งเดียว |
ฟิลด์ความสัมพันธ์
| ประเภท | ฟิลด์เหมือนกันในทุกภาษา | ฟิลด์แตกต่างกันในแต่ละภาษา |
|---|---|---|
| Link | คัดลอก | คัดลอกครั้งเดียว |
| Post Object | คัดลอก | คัดลอกครั้งเดียว |
| Page Link | คัดลอก | คัดลอกครั้งเดียว |
| Relationship | คัดลอก | คัดลอกครั้งเดียว |
| Taxonomy | คัดลอก | คัดลอกครั้งเดียว |
| User | คัดลอก | คัดลอกครั้งเดียว |
การตั้งค่ากำหนดสำหรับฟิลด์ที่ลงทะเบียนใน PHP หรือ JSON
กลุ่มฟิลด์ของ ACF ที่ลงทะเบียนใน PHP (ผ่าน acf_add_local_field_group()) หรือผ่านคุณสมบัติ Local JSON ของ ACF จะไม่ดึงการตั้งค่ากำหนดการแปลจาก UI ของหน้าจัดการเว็บไซต์ เนื่องจากหน้าจัดการเว็บไซต์ไม่ได้เป็นตัวจัดการฟิลด์เหล่านี้ ให้ตั้งค่ากำหนดในตำแหน่งเดียวกับที่คุณลงทะเบียนฟิลด์
สำหรับแต่ละฟิลด์ในการกำหนดกลุ่มฟิลด์ ให้เพิ่มคีย์ wpml_cf_preferences โดยค่าจะเป็นจำนวนเต็มที่จับคู่กับการตั้งค่ากำหนดการแปลทั้ง 4 แบบ: 0 สำหรับ ไม่แปล (WPML จะละเว้นฟิลด์นี้), 1 สำหรับ คัดลอก (ค่าจะซิงค์กันในทุกภาษา), 2 สำหรับ แปล (ค่าจะผ่านกระบวนการแปล) และ 3 สำหรับ คัดลอกครั้งเดียว (ค่าจะถูกคัดลอกไปยังคำแปลใหม่ จากนั้นแต่ละภาษาสามารถแก้ไขได้อย่างอิสระ)
ตัวอย่างแบบย่อ:
acf_add_local_field_group( [
'key' => 'group_1',
'title' => 'My Group',
'fields' => [
[
'key' => 'field_1',
'label' => 'Sub Title',
'name' => 'sub_title',
'type' => 'text',
'wpml_cf_preferences' => 2, // Translate.
],
],
// ...rest of the field-group config
] );
หลังจากที่คุณกำหนดฟิลด์ในโค้ดแล้ว ให้ซิงค์การตั้งค่ากำหนดเข้ากับ WPML เพื่อให้หน้าจัดการเว็บไซต์จดจำได้:
- ไปที่ ACF > เครื่องมือ
- เลื่อนไปที่ Translate ACF Local JSON and PHP-Registered Fields
- ในส่วน Sync Translation Preferences for Local Fields ให้เลือก Sync once now แล้วคลิก ใช้
WPML จะอ่านการตั้งค่ากำหนดจากการกำหนดฟิลด์ใน PHP ของคุณและจัดเก็บไว้ การซิงค์จะทำงานเพียงครั้งเดียวเมื่อคุณสั่งงาน ไม่ใช่ทุกครั้งที่โหลดหน้าเว็บ
หากคุณใช้คุณสมบัติ Local JSON ของ ACF เพื่อแชร์กลุ่มฟิลด์ระหว่างไซต์ ACFML จะเขียนการตั้งค่ากำหนดการแปลลงในไฟล์ JSON โดยอัตโนมัติ เมื่อส่งออกไฟล์ JSON จากไซต์หนึ่งและนำเข้าไปยังอีกไซต์หนึ่ง ไซต์ปลายทางจะรับการตั้งค่ากำหนดไปใช้งานทันทีที่เปิดใช้งาน ACFML ทั้งสองฝั่ง
การแปลป้ายกำกับฟิลด์ของ ACF
ป้ายกำกับฟิลด์ของ ACF คือชื่อที่ใช้ระบุฟิลด์กำหนดเองแต่ละรายการในตัวแก้ไข WordPress และบนส่วนหน้าเว็บไซต์ (เช่น หมายเลขโทรศัพท์, ที่อยู่) ป้ายกำกับเหล่านี้จะได้รับการแปลแยกต่างหากจากค่าของฟิลด์ และจะอยู่ใน WPML การแปลสตริง ไม่ใช่อยู่ในงานแปลของโพสต์
วิธีส่งป้ายกำกับฟิลด์ไปแปล:
- เปิด WPML > การแปล > แดชบอร์ด
- ขยายส่วน ACF Field Group
- เลือกรายการ Field Group Labels สำหรับกลุ่มฟิลด์ที่คุณต้องการแปล
- เลือกวิธีการแปล (PTC, นักแปลของคุณ หรือ แปลด้วยตัวเอง) แล้วส่ง
ป้ายกำกับที่แปลแล้วจะปรากฏบนส่วนหน้าเว็บไซต์โดยอัตโนมัติเมื่อการแปลเสร็จสมบูรณ์
การแปลตัวเลือกฟิลด์ของ ACF
ฟิลด์ตัวเลือก (Select, Checkbox, Radio Button, Button Group) จะมีป้ายกำกับตัวเลือกของตัวเอง (เช่น เล็ก / กลาง / ใหญ่) ตัวเลือกเหล่านี้จะอยู่ร่วมกับป้ายกำกับฟิลด์เช่นกัน แทนที่จะอยู่ในการแปลโพสต์ ส่งไปแปลด้วยวิธีเดียวกัน:
- เปิด WPML > การแปล > แดชบอร์ด
- ขยายส่วน ACF Field Group
- เลือกกลุ่มฟิลด์ที่คุณต้องการแปลค่าตัวเลือก
- เลือกวิธีการแปลแล้วส่ง
การแปลหน้าตัวเลือกของ ACF
หน้าตัวเลือกของ ACF (หน้าจอการตั้งค่าส่วนกลาง เช่น รายละเอียดการติดต่อ, การตั้งค่าส่วนหัว, ลิงก์ส่วนท้าย) จะได้รับการแปลเป็นประเภทออบเจ็กต์ของตัวเอง ซึ่งแยกจากโพสต์:
- เปิด WPML > การแปล > แดชบอร์ด
- ขยายส่วน ACF Options
- เลือกหน้าตัวเลือกที่คุณต้องการแปล
- เลือกวิธีการแปลแล้วส่ง
ค่าของหน้าตัวเลือกในแต่ละภาษาจะปรากฏขึ้นโดยอัตโนมัติเมื่อ ACF อ่านตัวเลือกในบริบทของภาษานั้น
ข้อผิดพลาดที่พบบ่อย
- ป้ายกำกับฟิลด์ดูเหมือนยังไม่ได้รับการแปล ป้ายกำกับเหล่านี้อยู่ใน การแปลสตริง ไม่ใช่ในการแปลโพสต์ ให้ส่งรายการ Field Group Labels ของกลุ่มฟิลด์จากแดชบอร์ด (ดู การแปลป้ายกำกับฟิลด์ของ ACF ด้านบน)
- ค่าตัวเลือกดูเหมือนยังไม่ได้รับการแปล เป็นลักษณะเดียวกัน ให้ส่งกลุ่มฟิลด์จากส่วน ACF Field Group ของแดชบอร์ด เพื่อให้ครอบคลุมถึงค่าตัวเลือกด้วย
- แถวของ Repeater ไม่ซิงค์กัน ฟิลด์นี้อาจถูกตั้งค่าเป็น คัดลอกครั้งเดียว ทั้งที่การใช้ คัดลอก จะช่วยให้แถวตรงกัน ให้เปิดกลุ่มฟิลด์ > เปลี่ยนพฤติกรรมของฟิลด์ Repeater เป็น คัดลอก
- ตรรกะแบบมีเงื่อนไขทำงานไม่ตรงตามที่คาดไว้ เมื่อฟิลด์ควบคุมถูกตั้งค่าเป็น คัดลอก หรือ ไม่แปล พฤติกรรมของเงื่อนไขจะยึดตามค่าของภาษาต้นทางในทุกคำแปล ให้ตั้งค่าฟิลด์ควบคุมเป็น แปล หากค่าของฟิลด์นั้นควรแตกต่างกันไปในแต่ละภาษา
- ฟิลด์ภายในเครื่อง (ลงทะเบียนด้วย PHP) ละเว้นการตั้งค่ากำหนดการแปลที่ตั้งไว้ในหน้าจัดการเว็บไซต์ ให้ตั้งค่าคีย์
wpml_cf_preferencesในการกำหนดกลุ่มฟิลด์โดยตรงแล้วซิงค์จาก ACF > เครื่องมือ ขั้นตอนอยู่ใน การตั้งค่ากำหนดสำหรับฟิลด์ที่ลงทะเบียนใน PHP หรือ JSON ด้านบน ACFML 2.2.0 (ก.พ. 2026) ได้เพิ่มการรองรับฟิลด์ภายในเครื่องอย่างเต็มรูปแบบ ส่วนเวอร์ชันเก่าจะมีข้อจำกัดในส่วนนี้
ฮุกสำหรับนักพัฒนาเพื่อรองรับกรณีพิเศษ
สำหรับการควบคุมผ่านโปรแกรม (เลือกไม่แปลบางฟิลด์ ลบล้างการตั้งค่าเริ่มต้นสำหรับประเภทฟิลด์ทั่วทั้งไซต์ ซ่อนคำอธิบายประกอบจากนักแปล หรือยกเว้นสตริงกลุ่มฟิลด์จากงานแปลโพสต์) ACFML มีฟิลเตอร์ 2 ตัวและค่าคงที่ 4 ตัวให้ใช้งาน สามารถดูข้อมูลอ้างอิงฉบับเต็มพร้อมตัวอย่างโค้ดได้ที่ ข้อมูลอ้างอิงฮุกและค่าคงที่ของ ACFML
เขียนโดย Amir · อัปเดตล่าสุด 2 กรกฎาคม 2026
เขียนโดย Amir · อัปเดตล่าสุด 2 กรกฎาคม 2026