Saya mencoba menyiapkan struktur jenis pos kustom multi-level dengan permalink yang terlihat seperti authors/books/chapters
, dengan penulis, buku, dan bab semua diatur sebagai jenis pos kustom mereka sendiri. Misalnya, URL tipikal pada situs ini mungkin terlihatexample.com/authors/stephen-king/the-shining/chapter-3/
Setiap bab hanya dapat dimiliki oleh satu buku, dan setiap buku hanya dapat dimiliki oleh satu penulis. Saya telah mempertimbangkan menggunakan taksonomi alih-alih CPT untuk penulis dan buku, tetapi saya harus mengaitkan metadata dengan setiap item dan saya lebih suka antarmuka posting untuk ini.
Saya sebagian besar jalan di sana dengan hanya mengatur setiap pos kustom sebagai anak dari entri di CPT satu tingkat ke atas. Misalnya, saya membuat "Bab 3" dan menetapkan "The Shining" sebagai induk menggunakan kotak meta khusus. "The Shining" pada gilirannya memiliki "Stephen King" sebagai orang tua. Saya tidak kesulitan membuat hubungan ini.
Saya menggunakan tag menulis ulang di siput CPT dan permalink ingin bekerja, tetapi mereka tidak benar. Dengan menggunakan penganalisis penulisan ulang, saya dapat melihat bahwa aturan penulisan ulang sebenarnya dibuat, tetapi aturan tersebut tampaknya tidak berada dalam urutan yang benar sehingga aturan lain diproses terlebih dahulu.
Inilah cara saya mendaftarkan CPT saya:
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' );
Jadi, adakah cara untuk mengubah prioritas aturan penulisan ulang saya sehingga penulis, buku, dan bab semuanya cocok terlebih dahulu?
Saya juga tahu bahwa saya harus menambahkan post_type_link
filter, tapi itu tampaknya sekunder untuk mendapatkan permalink yang benar. Jika ada yang tahu di mana saya dapat menemukan ikhtisar komprehensif tentang cara kerja filter itu, itu akan dihargai.