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คัดลอกคัดลอกครั้งเดียว
Emailคัดลอกคัดลอกครั้งเดียว
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 เพื่อให้หน้าจัดการเว็บไซต์จดจำได้:

  1. ไปที่ ACF > เครื่องมือ
  2. เลื่อนไปที่ Translate ACF Local JSON and PHP-Registered Fields
  3. ในส่วน Sync Translation Preferences for Local Fields ให้เลือก Sync once now แล้วคลิก ใช้

WPML จะอ่านการตั้งค่ากำหนดจากการกำหนดฟิลด์ใน PHP ของคุณและจัดเก็บไว้ การซิงค์จะทำงานเพียงครั้งเดียวเมื่อคุณสั่งงาน ไม่ใช่ทุกครั้งที่โหลดหน้าเว็บ

หากคุณใช้คุณสมบัติ Local JSON ของ ACF เพื่อแชร์กลุ่มฟิลด์ระหว่างไซต์ ACFML จะเขียนการตั้งค่ากำหนดการแปลลงในไฟล์ JSON โดยอัตโนมัติ เมื่อส่งออกไฟล์ JSON จากไซต์หนึ่งและนำเข้าไปยังอีกไซต์หนึ่ง ไซต์ปลายทางจะรับการตั้งค่ากำหนดไปใช้งานทันทีที่เปิดใช้งาน ACFML ทั้งสองฝั่ง

การแปลป้ายกำกับฟิลด์ของ ACF

ป้ายกำกับฟิลด์ของ ACF คือชื่อที่ใช้ระบุฟิลด์กำหนดเองแต่ละรายการในตัวแก้ไข WordPress และบนส่วนหน้าเว็บไซต์ (เช่น หมายเลขโทรศัพท์, ที่อยู่) ป้ายกำกับเหล่านี้จะได้รับการแปลแยกต่างหากจากค่าของฟิลด์ และจะอยู่ใน WPML การแปลสตริง ไม่ใช่อยู่ในงานแปลของโพสต์

วิธีส่งป้ายกำกับฟิลด์ไปแปล:

  1. เปิด WPML > การแปล > แดชบอร์ด
  2. ขยายส่วน ACF Field Group
  3. เลือกรายการ Field Group Labels สำหรับกลุ่มฟิลด์ที่คุณต้องการแปล
  4. เลือกวิธีการแปล (PTC, นักแปลของคุณ หรือ แปลด้วยตัวเอง) แล้วส่ง

ป้ายกำกับที่แปลแล้วจะปรากฏบนส่วนหน้าเว็บไซต์โดยอัตโนมัติเมื่อการแปลเสร็จสมบูรณ์

การแปลตัวเลือกฟิลด์ของ ACF

ฟิลด์ตัวเลือก (Select, Checkbox, Radio Button, Button Group) จะมีป้ายกำกับตัวเลือกของตัวเอง (เช่น เล็ก / กลาง / ใหญ่) ตัวเลือกเหล่านี้จะอยู่ร่วมกับป้ายกำกับฟิลด์เช่นกัน แทนที่จะอยู่ในการแปลโพสต์ ส่งไปแปลด้วยวิธีเดียวกัน:

  1. เปิด WPML > การแปล > แดชบอร์ด
  2. ขยายส่วน ACF Field Group
  3. เลือกกลุ่มฟิลด์ที่คุณต้องการแปลค่าตัวเลือก
  4. เลือกวิธีการแปลแล้วส่ง

การแปลหน้าตัวเลือกของ ACF

หน้าตัวเลือกของ ACF (หน้าจอการตั้งค่าส่วนกลาง เช่น รายละเอียดการติดต่อ, การตั้งค่าส่วนหัว, ลิงก์ส่วนท้าย) จะได้รับการแปลเป็นประเภทออบเจ็กต์ของตัวเอง ซึ่งแยกจากโพสต์:

  1. เปิด WPML > การแปล > แดชบอร์ด
  2. ขยายส่วน ACF Options
  3. เลือกหน้าตัวเลือกที่คุณต้องการแปล
  4. เลือกวิธีการแปลแล้วส่ง

ค่าของหน้าตัวเลือกในแต่ละภาษาจะปรากฏขึ้นโดยอัตโนมัติเมื่อ 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