WPML

เมื่อคุณลงทะเบียนประเภทโพสต์แบบกำหนดเองด้วยตนเอง WordPress จะอนุญาตให้คุณตั้งค่าสลักของที่เก็บถาวรที่แตกต่างกันได้ วิธีที่คุณกำหนดค่าส่วนนี้จะเป็นตัวกำหนดว่าสลักจะได้รับการแปลเป็นภาษารองของคุณหรือไม่

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

WPML อนุญาตให้ตั้งค่า has_archive เป็นสตริงข้อความได้ อย่างไรก็ตาม หากค่าสตริงถูกตั้งเป็นอย่างอื่นที่ไม่ใช่ rewrite['slug'], หรือไม่ได้ตั้งค่าสลักชื่อประเภทโพสต์แบบกำหนดเอง สลักของที่เก็บถาวรจะไม่สามารถแปลได้

การตั้งค่าสลักที่แปลได้


ในตัวอย่างโค้ดนี้ เราได้ตั้งค่า 'has_archive' => true สมมติว่าสลัก book ได้รับการแปลเป็น libro ในภาษาสเปน ลิงก์ที่เก็บถาวรจะเป็นดังต่อไปนี้:

  • ภาษาอังกฤษ (ภาษาเริ่มต้น): http://mydomain.tld/book/

  • ภาษาสเปน (ภาษารอง): http://mydomain.tld/es/libro/

	 	 
add_action( 'init', 'create_post_type' );	 	 
function create_post_type() {	 	 
   register_post_type( 'book',	 	 
      array(	 	 
         'labels' => array(	 	 
            'name' => __( 'Books', 'textdomain' ),	 	 
            'singular_name' => __( 'Book', 'textdomain' )	 	 
         ),	 	 
         'public' => true,	 	 
         'has_archive' => true,	 	 
         'publicly_queryable' => true,	 	 
         'exclude_from_search' => false,	 	 
         'show_ui' => true,	 	 
         'show_in_menu' => true,	 	 
         'query_var' => true,	 	 
         'rewrite' => array('slug' => 'book'),	 	 
         'supports' => array('title','editor', 'custom-fields','thumbnail')	 	 
      )	 	 
   );	 	 
}	 	 

การตั้งค่าสลักเดียวกันในภาษาเริ่มต้นและภาษารอง

ในตัวอย่างโค้ดนี้ เราได้ตั้งค่าสตริงเฉพาะสำหรับพารามิเตอร์ 'has_archive' => 'my-books' ตอนนี้ลิงก์ที่เก็บถาวรจะเป็นดังต่อไปนี้:
  • ภาษาอังกฤษ (ภาษาเริ่มต้น): http://mydomain.tld/my-books/
  • ภาษาสเปน (ภาษารอง): http://mydomain.tld/es/my-books/
	 	 
add_action( 'init', 'create_post_type' );	 	 
function create_post_type() {	 	 
   register_post_type( 'book',	 	 
      array(	 	 
         'labels' => array(	 	 
            'name' => __( 'Books', 'textdomain' ),	 	 
            'singular_name' => __( 'Book', 'textdomain' )	 	 
         ),	 	 
         'public' => true,	 	 
         'has_archive' => 'my-books', // Do not use the gettext functions for this parameter	 	 
         'publicly_queryable' => true,	 	 
         'exclude_from_search' => false,	 	 
         'show_ui' => true,	 	 
         'show_in_menu' => true,	 	 
         'query_var' => true,	 	 
         'rewrite' => array('slug' => 'book'),	 	 
         'supports' => array('title','editor', 'custom-fields','thumbnail')	 	 
      )	 	 
   );	 	 
}	 	 

การแก้ปัญหาสลักที่ปรับแต่งได้


ธีมและปลั๊กอินบางตัวอนุญาตให้ผู้ดูแลเว็บไซต์ตั้งค่าสลักแบบกำหนดเองสำหรับประเภทโพสต์แบบกำหนดเองและอนุกรมวิธานแบบกำหนดเองของตนได้

หากสลักแบบกำหนดเองที่แปลแล้วของคุณส่งคืนข้อผิดพลาด 404 โปรดตรวจสอบสิ่งต่อไปนี้:


  • ประเภทแบบกำหนดเองควรได้รับการลงทะเบียนด้วยสลักเดียวกันเสมอในทุกคำขอ: ต่อภาษา ส่วนหน้า ส่วนหลัง AJAX heartbeat ฯลฯ ดังนั้นใน 'rewrite' => [ 'slug' => $my_custom_slug ], ค่าของ $my_custom_slug ไม่ควรเปลี่ยนแปลงจากคำขอหนึ่งไปยังอีกคำขอหนึ่ง แม้ว่าจะมาจากตัวเลือก (หรือการตั้งค่าแบบกำหนดเองใด ๆ) ก็ตาม

  • WPML รองรับเฉพาะการแปลสลักแบบกำหนดเอง (เมื่อลงทะเบียนประเภทแบบกำหนดเอง) แต่ไม่รองรับโครงสร้างลิงก์ถาวรแบบกำหนดเอง

  • หากสลักแบบกำหนดเองถูกจัดเก็บเป็นตัวเลือก ก็ไม่ควรลงทะเบียนเป็น admin-texts ในไฟล์ wpml-config.xml

  • หลังจากอัปเดตค่าของสลักแบบกำหนดเองแล้ว ธีม/ปลั๊กอินควรล้างกฎการเขียนใหม่ด้วย (โดยการเรียกใช้ flush_rewrite_rules();)

เขียนโดย Amir · อัปเดตล่าสุด 30 พฤษภาคม 2024