authors/books/chapters
Yazarlar, kitaplar ve bölümler gibi kendi özel yazı türü olarak ayarlanmış kalıcı bağlantılar ile çok düzeyli özel yazı tipi bir yapı kurmaya çalışıyorum . Örneğin, bu sitedeki tipik bir URL,example.com/authors/stephen-king/the-shining/chapter-3/
Her bölüm sadece bir kitaba ait olabilir ve her kitap sadece bir yazara ait olabilir. Yazarlar ve kitaplar için CPT'ler yerine taksonomiler kullanmayı düşündüm, ancak meta verileri her öğe ile ilişkilendirmem gerekiyor ve bunun için yazı arayüzünü tercih ediyorum.
Ben en çok orada her özel yazı CPT bir seviye yukarı bir girişin alt öğesi olarak ayarlayarak. Örneğin, "Bölüm 3" oluşturuyorum ve özel bir meta kutu kullanarak üst öğe olarak "Parlayan" atayım. "Shining" de ebeveyn olarak "Stephen King" e sahip. Bu ilişkileri oluşturmakta hiç sorun yaşamadım.
CPT salyangozlarında yeniden yazma etiketleri kullanıyorum ve kalıcı bağlantılar çalışmak istiyor, ancak tam olarak doğru değiller. Yeniden yazma çözümleyicisini kullanarak, yeniden yazma kurallarının gerçekten oluşturulduğunu görebilirim, ancak doğru sırada görünmüyorlar ve bu nedenle önce diğer kurallar işleniyor.
CPT'lerimi şu şekilde kaydettirdim:
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' );
Öyleyse, yazarların, kitapların ve bölümlerin hepsinin önce eşleşmesi için yeniden yazma kurallarının önceliğini değiştirmenin bir yolu var mı?
Ayrıca bir post_type_link
filtre eklemek zorunda olacağımı da biliyorum , ancak bu ilk etapta kalıcı bağlantıları elde etmek için ikincil görünüyor. Herkes bu filtrenin nasıl çalıştığına dair kapsamlı bir genel bakış nerede bulabileceğimi biliyorsa, takdir edilecektir.