ทำเว็บ WordPress หลายภาษาด้วย Polylang ฟรี

ตั้งค่า WordPress รองรับหลายภาษาด้วย Polylang ฟรี ครอบคลุม SEO hreflang, Language Switcher และ URL Structure

ทำเว็บ WordPress หลายภาษา Polylang WordPress

Polylang vs WPML เลือกตัวไหนดี?

หากต้องการทำเว็บ WordPress รองรับหลายภาษา ตัวเลือกยอดนิยมมีอยู่สองตัวหลักคือ Polylang และ WPML ทั้งสองแตกต่างกันในเรื่องราคา ความซับซ้อน และความสามารถ การเลือกให้เหมาะสมกับโปรเจกต์จะช่วยให้ประหยัดค่าใช้จ่ายและลดความยุ่งยากได้มาก

Polylang เป็น Plugin ฟรีที่มีฟีเจอร์ครบพอสำหรับเว็บไซต์ทั่วไป ตั้งแต่การแปลหน้า โพสต์ หมวดหมู่ ไปจนถึงการตั้งค่า hreflang เพื่อ SEO หลายภาษา ส่วน WPML เป็น Plugin แบบเสียเงิน ราคาเริ่มต้นประมาณ 39–99 USD ต่อปี มีฟีเจอร์ขั้นสูงเพิ่มเติม เช่น การแปลสตริง (String Translation) และการรองรับ WooCommerce อย่างสมบูรณ์ในแพ็กเกจระดับสูง

คุณสมบัติ Polylang (ฟรี) Polylang Pro WPML
ราคาฟรี~99 USD/ปี39–99 USD/ปี
แปลโพสต์/หน้า
แปล Custom Post Typeบางส่วน
hreflang อัตโนมัติ
URL Structure ยืดหยุ่น
String Translation
WooCommerce รองรับPlugin เสริม✓ (Multilingual)
ความง่ายในการใช้งานง่ายง่ายปานกลาง

สรุปแนะนำ: หากเป็นเว็บบล็อก เว็บบริษัท หรือเว็บแนะนำสินค้าทั่วไปที่ต้องการรองรับสองถึงสามภาษา Polylang ฟรีเพียงพอสมบูรณ์ ไม่ต้องจ่ายเงิน ควรพิจารณา WPML หรือ Polylang Pro เมื่อต้องการแปลสตริงในธีม Plugin ต่างๆ หรือต้องการรองรับ WooCommerce แบบสมบูรณ์

ติดตั้ง Polylang และตั้งค่าภาษาแรก

การติดตั้ง Polylang ทำได้ผ่าน WordPress Admin Panel โดยตรง ไม่ต้องอัพโหลดไฟล์เองหรือแก้ไขอะไรเพิ่มเติม เพียงเข้า Plugins → Add New แล้วค้นหาคำว่า "Polylang" จากนั้นคลิก Install Now แล้ว Activate ได้เลย

หลัง Activate จะมีหน้า Setup Wizard ปรากฏขึ้นมาทันที Polylang จะถามให้เพิ่มภาษาแรก ซึ่งโดยปกติควรเป็นภาษาหลักของเว็บไซต์ หากเว็บเดิมเป็นภาษาไทย ให้เลือก Thai (ไทย) เป็นภาษาแรก ระบบจะตั้งให้ภาษานี้เป็น Default Language โดยอัตโนมัติ

  1. เข้า WordPress Admin → Plugins → Add New Plugin
  2. ค้นหา "Polylang" ในช่อง Search
  3. คลิก Install Now ที่ Plugin ของ WP SYNTEX แล้วคลิก Activate
  4. หน้า Setup Wizard จะเปิดขึ้น คลิก Let's Start!
  5. ในหัวข้อ Add Languages ให้เลือก Thai จาก Dropdown แล้วคลิก Add Language
  6. ตรวจสอบว่าภาษาไทยขึ้นในรายการ Installed Languages แล้วคลิก Continue
  7. ในหัวข้อ Media ให้เลือกว่าจะแชร์รูปภาพระหว่างภาษาหรือแยก ส่วนใหญ่เลือก Synchronize all media ดีกว่า
  8. คลิก Finish เพื่อเสร็จสิ้น Setup

หลังติดตั้งสำเร็จ จะมีเมนูใหม่ชื่อ Languages ปรากฏในแถบด้านซ้ายของ Admin ซึ่งเป็นศูนย์กลางการจัดการภาษาทั้งหมดของ Polylang นอกจากนี้ในหน้า Posts และ Pages จะมีคอลัมน์ภาษาเพิ่มมาให้เห็นว่าแต่ละโพสต์ถูกตั้งเป็นภาษาอะไร

Tip: หากโพสต์เก่าที่มีอยู่ในระบบยังไม่ได้รับการกำหนดภาษา Polylang จะแสดงเป็นช่องว่าง ให้เข้าไปแก้ไขแต่ละโพสต์แล้วกำหนดภาษาใน Language Box ทางด้านขวาของ Editor

เพิ่มภาษาที่สอง (EN) และตั้งค่า URL Structure

หลังจากตั้งภาษาแรก (ไทย) เรียบร้อยแล้ว ขั้นตอนต่อไปคือเพิ่มภาษาที่สอง ในที่นี้คือ English โดยไปที่ Languages → Languages แล้วใช้ช่อง Add New Language ทางด้านซ้าย เลือก English จาก Dropdown ของ Choose a language แล้วคลิก Add Language ระบบจะเพิ่ม English เข้าในรายการทันที

หลังจากเพิ่มภาษาแล้ว ให้ตั้งค่า URL Structure ซึ่งเป็นส่วนสำคัญมากสำหรับ SEO โดยไปที่แท็บ URL Modifications หรือผ่าน Settings → Languages → URL Modifications Polylang มีตัวเลือก URL ดังนี้

ตัวเลือกที่แนะนำที่สุดคือ Subdirectory เพราะ Google เข้าใจได้ชัดเจน SEO แยกกันได้ดี และตั้งค่าง่ายที่สุด ตัวอย่างเช่น เว็บภาษาไทยจะอยู่ที่ yoursite.com/th/ และเว็บภาษาอังกฤษอยู่ที่ yoursite.com/en/ หรือจะตั้งให้ภาษาหลัก (ไทย) ไม่มี prefix ก็ได้ โดยเลือก Hide URL language information for default language

  1. ไปที่ Languages → Languages แล้วคลิกแท็บ Settings
  2. ในส่วน URL Modifications เลือก The language is set from the subdirectory
  3. ติ๊ก Remove /language/ in pretty permalinks ถ้าต้องการให้ URL สั้น
  4. เลือก Force language in URL เพื่อให้ URL ภาษา Default มี prefix ด้วย
  5. คลิก Save Changes
  6. ไปที่ Settings → Permalinks แล้วกด Save Changes อีกครั้งเพื่อให้ WordPress รีเฟรช .htaccess

แปลหน้า/โพสต์แต่ละบทความ

เมื่อตั้งค่าภาษาครบแล้ว ขั้นตอนสำคัญคือการสร้างเวอร์ชันแปลของแต่ละโพสต์หรือหน้า ใน Polylang การแปลไม่ได้ทำอัตโนมัติ (Polylang ฟรีไม่รวม Machine Translation) แต่ทำให้คุณสร้างโพสต์คู่ขนานได้อย่างง่ายดาย

ในหน้า Posts List จะมีไอคอนธงชาติแสดงในแต่ละแถว ถ้าโพสต์ยังไม่มีเวอร์ชันภาษาอังกฤษ ไอคอน EN จะเป็นสีเทา ให้คลิกที่ไอคอน EN เพื่อสร้างโพสต์ใหม่ที่ผูกเป็นคู่แปลกัน ระบบจะเปิด Editor ใหม่ให้คุณพิมพ์เนื้อหาภาษาอังกฤษได้เลย

  1. ไปที่ Posts → All Posts
  2. ดูคอลัมน์ภาษาทางด้านขวา หากมีธงชาติหลายธงแสดงว่ารองรับหลายภาษาแล้ว
  3. คลิกไอคอนธง EN (สีเทา) ในแถวของโพสต์ที่ต้องการแปล
  4. WordPress Editor จะเปิดหน้าใหม่ พร้อมข้อความว่าเป็น "Translation of: [ชื่อโพสต์เดิม]"
  5. ใส่ชื่อเรื่อง (Title) และเนื้อหาภาษาอังกฤษ
  6. ตรวจสอบใน Language Box ทางขวาว่าถูกตั้งเป็น English
  7. คลิก Publish

สำหรับ Pages เช่น หน้า About, Contact, หรือหน้า Services ให้ทำแบบเดียวกันใน Pages → All Pages Polylang จะผูกความสัมพันธ์ระหว่างหน้าไทยและหน้าอังกฤษให้อัตโนมัติ ซึ่งระบบจะใช้ความสัมพันธ์นี้ในการสร้าง hreflang tag สำหรับ SEO

Tip: ถ้ามีโพสต์เยอะ สามารถใช้ฟีเจอร์ Bulk Edit ใน Posts List เพื่อกำหนดภาษาให้หลายโพสต์พร้อมกันได้ โดยติ๊กเลือกโพสต์แล้วเลือก Language จาก Bulk Actions

ตั้งค่า Language Switcher ใน Menu

Language Switcher คือปุ่มหรือลิ้งค์ที่ให้ผู้เยี่ยมชมเว็บสามารถสลับภาษาได้ด้วยตัวเอง Polylang มีตัวเลือก Language Switcher ให้หลายรูปแบบ ทั้งแบบ Widget ในแถบด้านข้าง และแบบ Menu Item ในเมนูนำทาง

วิธีเพิ่ม Language Switcher ใน Navigation Menu ทำได้ผ่าน Appearance → Menus โดย Polylang จะเพิ่มส่วนชื่อ Language Switcher ไว้ด้านซ้ายให้สามารถลากไปใส่ในเมนูได้เลย นอกจากนี้ยังมีตัวเลือกใน Widget Area เช่น Sidebar หรือ Footer

  1. ไปที่ Appearance → Menus
  2. เลือกเมนูที่ต้องการเพิ่ม Language Switcher (เช่น Primary Menu)
  3. ทางด้านซ้ายจะมีหัวข้อ Language Switcher ในรายการ Add Menu Items
  4. คลิก Add to Menu เพื่อใส่ Language Switcher เข้าในเมนู
  5. คลิก Save Menu

นอกจาก Menu แล้ว สามารถเพิ่ม Language Switcher เป็น Widget ได้โดยไปที่ Appearance → Widgets (หรือผ่าน Gutenberg Site Editor) แล้วค้นหา Widget ชื่อ Polylang Language Switcher ลากไปวางในตำแหน่งที่ต้องการ เช่น Sidebar หรือ Footer Widget Area

SEO Multilingual: hreflang และ Canonical

หนึ่งในสาเหตุหลักที่นักพัฒนาเลือก Polylang คือความสามารถในการจัดการ SEO หลายภาษาโดยอัตโนมัติ Polylang จะสร้าง hreflang tag ใน <head> ของทุกหน้าให้ Google และ Search Engine อื่นๆ ทราบว่าหน้าใดเป็นภาษาอะไร และหน้าใดเป็น Alternative กันบ้าง

ตัวอย่าง hreflang ที่ Polylang สร้างให้อัตโนมัติจะมีหน้าตาแบบนี้ ซึ่ง Google ใช้ข้อมูลนี้เพื่อแสดงผลการค้นหาที่ตรงกับภาษาของผู้ใช้

<link rel="alternate" hreflang="th" href="https://yoursite.com/th/blog-post/" />
<link rel="alternate" hreflang="en" href="https://yoursite.com/en/blog-post/" />
<link rel="alternate" hreflang="x-default" href="https://yoursite.com/th/blog-post/" />

สำหรับ Canonical URL นั้น แต่ละหน้าแต่ละภาษาจะมี Canonical ชี้ไปที่ตัวเองเสมอ ไม่ข้ามภาษา ซึ่ง Polylang จัดการให้อัตโนมัติ ทำให้ไม่เกิดปัญหา Duplicate Content ระหว่างหน้าภาษาไทยและภาษาอังกฤษ

Tip: ถ้าใช้ Yoast SEO ร่วมกับ Polylang ให้ไปที่ Yoast SEO → Search Appearance → ปิด "Enable Automatic hreflang" (ถ้ามีตัวเลือกนี้) เพื่อให้ Polylang เป็นตัวจัดการ hreflang แต่เพียงผู้เดียว หลีกเลี่ยง Conflict ที่ทำให้ hreflang ซ้ำหรือผิดพลาด

ตรวจสอบว่า Polylang ทำงานถูกต้อง

หลังตั้งค่าทุกอย่างเรียบร้อยแล้ว ควรตรวจสอบความถูกต้องของ Polylang ก่อน Publish หน้าสาธารณะจริง เพื่อให้มั่นใจว่า hreflang ถูกสร้างครบ Language Switcher ทำงาน และ URL Structure ตรงตามที่ตั้งไว้

สามารถตรวจสอบได้หลายวิธี ทั้งจาก Browser Source Code, Developer Tools ใน Chrome/Firefox รวมถึงการใช้เครื่องมือ Online ตรวจ hreflang และการดู Sitemap.xml ที่ Polylang จะสร้างแยกตามภาษา

# 1. ตรวจสอบ hreflang ใน source code ด้วย curl
curl -s "https://yoursite.com/th/about/" | grep -i hreflang

# ผลลัพธ์ที่ถูกต้องควรเห็น:
# <link rel="alternate" hreflang="th" href="https://yoursite.com/th/about/" />
# <link rel="alternate" hreflang="en" href="https://yoursite.com/en/about/" />
# <link rel="alternate" hreflang="x-default" href="https://yoursite.com/th/about/" />

# 2. ตรวจสอบ URL ภาษาอังกฤษว่า redirect ถูกต้อง
curl -I "https://yoursite.com/en/about/"
# HTTP/2 200 แสดงว่าหน้านี้มีอยู่จริง

# 3. ตรวจ Sitemap ที่ Polylang สร้าง
curl -s "https://yoursite.com/sitemap.xml" | grep sitemap
# ควรเห็น sitemap แยกภาษา เช่น sitemap-th.xml และ sitemap-en.xml

# 4. ตรวจว่า Language Switcher URL ถูกต้อง
# เปิดหน้าภาษาไทย แล้วดูว่า Link ของ EN ชี้ไปที่ /en/ หรือไม่
curl -s "https://yoursite.com/th/about/" | grep "/en/"
Tip: เปิด Browser DevTools → View Source แล้วค้นหา hreflang ต้องมี และ ครบทั้งคู่ ถ้าพบเพียงอันเดียวหรือไม่พบเลย แสดงว่าโพสต์ยังไม่ได้ผูกคู่แปลกัน หรือมี Plugin อื่น Override อยู่

แก้ปัญหาที่พบบ่อย

แม้ Polylang จะติดตั้งง่าย แต่ก็มีปัญหาที่พบบ่อยหลายอย่างซึ่งมือใหม่มักเจอ โดยเฉพาะเมื่อใช้ร่วมกับ Plugin SEO อื่นๆ หรือธีมที่มี Custom Menu System เฉพาะ ดังนี้

hreflang ไม่ปรากฏใน Source Code — Yoast/Rank Math Override

ปัญหานี้เกิดขึ้นบ่อยมากเมื่อใช้ Yoast SEO หรือ Rank Math ร่วมกับ Polylang เพราะ Plugin SEO เหล่านั้นก็มีระบบสร้าง hreflang ของตัวเองเช่นกัน เมื่อสองระบบทำงานพร้อมกัน อาจทำให้ hreflang หายไปหรือมีค่าผิดพลาด

วิธีแก้: เข้า Yoast SEO → SEO → Search Appearance → แท็บ General แล้วหาตัวเลือก hreflang หรือ "Internationalization" แล้วปิดออก จากนั้นรีเฟรชหน้าเว็บแล้วตรวจ Source Code ใหม่อีกครั้ง ใน Rank Math ให้ไปที่ Rank Math → General Settings → Links แล้วหา Disable hreflang

Language Switcher ไม่แสดงใน Menu — ต้องเพิ่ม Widget ใน Appearance

หากเพิ่ม Language Switcher เข้าเมนูแล้วแต่ยังไม่เห็นในหน้าเว็บ อาจเป็นเพราะธีมที่ใช้ไม่แสดง Menu Item บางประเภท หรืออาจเป็นเพราะเลือกเมนูผิด Location

วิธีแก้: ให้ลองเพิ่มผ่าน Appearance → Widgets แทน โดยค้นหา Widget "Polylang Language Switcher" แล้วลากไปวางใน Sidebar หรือ Footer Widget Area ซึ่งมักแสดงผลได้ดีกว่าเมนูในธีมบางตัว นอกจากนี้ตรวจสอบว่าเมนูที่แก้ไขเป็น Menu Location เดียวกับที่ธีมแสดงผลจริง

เนื้อหาเดียวกันแสดงซ้ำทั้งสองภาษา — ยังไม่ได้สร้าง Translation

ปัญหานี้เกิดเมื่อ Language Switcher เปลี่ยนภาษาแล้วเนื้อหายังเหมือนเดิม ส่วนใหญ่เป็นเพราะโพสต์หรือหน้านั้นยังไม่มีเวอร์ชันภาษาเป้าหมาย Polylang จึง Redirect กลับไปที่หน้า Home หรือแสดงหน้าภาษาเดิมแทน

วิธีแก้: ตรวจสอบใน Posts List ว่าธงภาษาอังกฤษของโพสต์นั้นเป็นสีสดหรือสีเทา ถ้าสีเทาแปลว่ายังไม่มี Translation ให้คลิกไอคอนธงเพื่อสร้างโพสต์เวอร์ชันภาษาอังกฤษ จากนั้น Publish และทดสอบใหม่

URL Structure เปลี่ยนไปทำให้ Link เก่าเสีย — ตั้ง Redirect

เมื่อเปิดใช้ Polylang และเปลี่ยน URL Structure เป็นแบบ Subdirectory (/th/ /en/) URL เก่าที่ไม่มี prefix อาจไม่ทำงานอีกต่อไป ทำให้ Link ที่แชร์ไว้ก่อนหน้า หรือ Backlink จากเว็บอื่นเสียหาย

วิธีแก้: ใช้ Plugin Redirect เช่น Redirection หรือ Safe Redirect Manager เพื่อตั้ง 301 Redirect จาก URL เก่าไปยัง URL ใหม่ที่มี /th/ prefix ตัวอย่าง ตั้ง Redirect จาก /about/ ไปยัง /th/about/ นอกจากนี้ควรอัพเดท Internal Link ในเนื้อหาทั้งหมดด้วย เพื่อหลีกเลี่ยงการผ่าน Redirect ที่ทำให้เว็บช้าลงเล็กน้อย

คำถามที่พบบ่อย

Polylang กับ WPML ต่างกันอย่างไร ควรเลือกตัวไหน?
Polylang ฟรีเหมาะกับเว็บทั่วไปที่ต้องการรองรับ 2-3 ภาษา สามารถแปลโพสต์ หน้า หมวดหมู่ และสร้าง hreflang ได้ครบ ส่วน WPML เป็น Plugin แบบเสียเงิน (39–99 USD/ปี) ที่มีฟีเจอร์เพิ่มเติม เช่น String Translation (แปลข้อความในธีมและ Plugin), การรองรับ WooCommerce ขั้นสูง และระบบ Translation Management ที่ละเอียดกว่า แนะนำให้เริ่มจาก Polylang ฟรีก่อน ถ้าพบข้อจำกัดค่อยพิจารณา Polylang Pro หรือ WPML ภายหลัง
ทำเว็บหลายภาษาแล้ว Google Index แยกกันไหม หรือมองเป็นหน้าเดียว?
Google มองเป็นหน้าแยกกันตาม URL ครับ เพราะแต่ละภาษามี URL ต่างกัน (เช่น /th/about/ และ /en/about/) Google จะ Index ทั้งสองหน้าแยกกัน และแสดงผลการค้นหาตามภาษาของผู้ใช้โดยใช้ข้อมูล hreflang ที่ Polylang สร้างให้ ทำให้ผู้ค้นหาด้วยภาษาไทยจะเห็นเวอร์ชันไทย ส่วนผู้ค้นหาด้วยภาษาอังกฤษจะเห็นเวอร์ชัน EN แยกกันชัดเจน
ถ้าแปลแค่บางโพสต์ ส่วนที่ยังไม่ได้แปล Google จะมองอย่างไร?
โพสต์ที่ยังไม่ได้แปลจะไม่มีหน้าภาษาที่สองอยู่ Google จะ Index เฉพาะหน้าที่มีอยู่จริงตาม URL ของแต่ละภาษา ไม่มีผลกระทบต่อหน้าภาษาอื่นที่มีอยู่แล้ว อย่างไรก็ตาม หาก Language Switcher พยายามเปลี่ยนไปภาษาที่ไม่มีเวอร์ชัน ผู้ใช้จะถูก Redirect ไปหน้า Home ของภาษานั้นแทน ซึ่งอาจทำให้ UX ไม่ดี แนะนำให้ค่อยๆ แปลให้ครบหรือตั้งค่า Polylang ให้ซ่อน Language Switcher สำหรับโพสต์ที่ยังไม่มีเวอร์ชันแปล