[WordPress] กฏเหล็กการทำ Custom Post Type / Taxonomy

สืบเนื่องจาก โพสที่แล้ว มาเจอปัญหาตอนทำ Pagination อีก ว่าหน้า 2 ของ Taxonomy กดไปแล้วติด 404 Error เลยไปหาข้อมูลเพิ่มเติมเกี่ยวกับการทำ Custom Post Type, Taxonomy เลยเอามาแปลเป็นไทยเก็บไว้เผื่อเจอปัญหารอบหน้า

กฏข้อ 1) ห้ามใส่ – (Hyphen) ในชื่อ Taxonomy

อันนี้อันตรายมาก เพราะ Template Hierachy ของ Taxonomy มีอันนี้ taxonomy-{taxonomy}-{term}.php

ตัวอย่าง: ถ้าเราตั้งชื่อ Taxonomy ว่า book-category เราก็ต้องตั้งชื่อไฟล์ว่า taxonomy-book-category.php ทำให้ WordPress เข้าใจผิดว่าเป็น taxonomy ชื่อ book โดยมี term ว่า category อีกที

วิธีแก้: ใช้ _ คั่นคำ เวลาตั้งชื่อ taxonomy แทน เป็น book_category

กฎข้อ 2) แก้ CPT, Taxonomy แล้ว Flush Rewrite Rule อีกรอบเสมอ

ต่อให้แก้โค้ดสร้าง Custom Post Type, Taxonomy ใน PHP แต่ใน WordPress จะยังไม่ได้จับ Rewrite Rule ใหม่ ทำให้บางทีเปิดหน้าไปเจอ 404 Error

วิธีแก้: เข้า Settings > Permalink กดเซฟ 1 จึ้ก เป็นอันเสร็จพิธี (อย่าลืมว่า Rewrite Slug สวย ๆ จะทำงานเฉพาะ Permalink แบบ Post Name เท่านั้น

ปลั๊กอินสำหรับเช็ค Query ต่าง ๆ

อันนี้ไปเจอมาเอง ชื่อ WP Debug Bar มันจะทำให้เรากด Debug มุมขวาบนจอเพื่อดู Query ที่ส่งไปในระบบได้ ว่ามันติดมั้ย หรือเป็น 404 (วันนี้เจอเคสแบบ Rewrite Rule ใน Debar Bar ขึ้นว่าติด แต่หน้าจริง ๆ ขึ้น Not Found เลยคิดว่าเกี่ยวกับข้อ 1)

เทคนิคเพิ่มเติม: ถ้าติดปัญหาจริง ๆ เราสามารถไปใส่

define( 'SAVEQUERIES', true );

ใน wp-config.php ได้ แล้วใน Debug Bar เราจะเห็นเลยว่ามีการ Query อะไรไปหลังบ้านบ้าง และได้อะไรตอบมาบ้าง

 

Reference: http://wordpress.stackexchange.com/questions/157862/templates-for-custom-post-types-and-custom-taxonomies/165256#165256

 

Leave a Reply

Your email address will not be published. Required fields are marked *