ฉันกำลังพยายามตั้งค่าโครงสร้างประเภทโพสต์ที่กำหนดเองหลายระดับด้วยลิงก์ถาวรที่มีหน้าตาเช่นเดียวauthors/books/chapters
กับผู้แต่งหนังสือและบททั้งหมดตั้งค่าเป็นประเภทโพสต์ที่กำหนดเองของพวกเขาเอง ตัวอย่างเช่น URL ทั่วไปในไซต์นี้อาจดูเหมือนexample.com/authors/stephen-king/the-shining/chapter-3/
แต่ละบทสามารถเป็นของหนังสือเล่มเดียวเท่านั้นและแต่ละเล่มสามารถเป็นของผู้เขียนคนเดียวเท่านั้น ฉันได้พิจารณาใช้ taxonomies แทน CPT สำหรับผู้แต่งและหนังสือ แต่ฉันต้องเชื่อมโยงข้อมูลเมตากับแต่ละรายการและฉันชอบอินเทอร์เฟซสำหรับโพสต์นี้
ฉันเป็นวิธีที่นั่นโดยเพียงตั้งค่าโพสต์ที่กำหนดเองแต่ละรายการให้เป็นรายการย่อยใน CPT หนึ่งระดับ ตัวอย่างเช่นฉันสร้าง "บทที่ 3" และกำหนด "The Shining" เป็นผู้ปกครองโดยใช้เมตาบ็อกที่กำหนดเอง "The Shining" ในทางกลับกัน "Stephen King" ในฐานะผู้ปกครอง ฉันไม่ได้มีปัญหาในการสร้างความสัมพันธ์เหล่านี้
ฉันใช้แท็กเขียนใหม่ในทาก CPT และลิงก์ถาวรต้องการทำงาน แต่มันไม่ถูกต้องนัก เมื่อใช้ตัววิเคราะห์การเขียนซ้ำฉันจะเห็นว่ากฎการเขียนซ้ำนั้นถูกสร้างขึ้นจริง แต่ดูเหมือนว่าจะไม่อยู่ในลำดับที่ถูกต้องและกฎอื่น ๆ จะถูกประมวลผลก่อน
นี่คือวิธีที่ฉันลงทะเบียน CPT ของฉัน:
function cpt_init() {
$labels = array(
'name' => 'Authors'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author',
'with_front' => FALSE,
),
'with_front' => false,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('authors',$args);
$labels = array(
'name' => 'Books'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author/%authors%',
'with_front' => FALSE,
),
'with_front' => false,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('books',$args);
$labels = array(
'name' => 'Chapters'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author/%authors%/%books%',
'with_front' => FALSE,
),
'with_front' => FALSE,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('chapters',$args);
}
add_action( 'init', 'cpt_init' );
ดังนั้นจะมีวิธีใดที่จะเปลี่ยนลำดับความสำคัญของกฎการเขียนใหม่ของฉันเพื่อให้ผู้เขียนหนังสือและบทต่าง ๆ ตรงกันทั้งหมดก่อน
ฉันก็รู้ว่าฉันจะต้องเพิ่มpost_type_link
ตัวกรอง แต่ดูเหมือนว่ารองสำหรับการได้รับความคิดเห็นในตอนแรก หากใครรู้ว่าฉันสามารถหาภาพรวมที่ครอบคลุมเกี่ยวกับวิธีการทำงานของตัวกรองนั้นจะได้รับการชื่นชม