authors/books/chapters
著者、本、章がすべて独自のカスタム投稿タイプとして設定された、のようなパーマリンクを含むマルチレベルのカスタム投稿タイプ構造を設定しようとしています。たとえば、このサイトの一般的なURLは次のようになります。example.com/authors/stephen-king/the-shining/chapter-3/
各章は1つの本にのみ属することができ、各本は1人の著者にのみ属することができます。著者と本のCPTの代わりに分類法を使用することを検討しましたが、メタデータを各アイテムに関連付ける必要があり、これにはポストインターフェイスを使用します。
私は、CPTのエントリの子として各カスタム投稿を1レベル上に設定するだけで、ほとんどの方法を実行できます。たとえば、「Chapter 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
フィルターを追加する必要があることもわかっていますが、これは最初にパーマリンクを正しく設定することに次ぐものです。そのフィルターがどのように機能するかについての包括的な概要がどこにあるかを誰かが知っているなら、それはありがたいです。