register_taxonomy
はオブジェクト型として配列を受け入れているので、私はカスタム分類法に多くのカスタム投稿型をリンクすることができます。それは結構です。
問題は、デフォルトの分類数はデフォルトの設定では常にゼロであるということです。それで、引数update_count_callback
に何を設定すればよいのでしょうか。
分類学は複数の投稿タイプにリンクされているので、私はこれを考えていたので、特定の投稿タイプを表示しているときにカウントは意味があります。
それでは、この分類法が複数のカスタム投稿タイプにリンクされている場合、カスタム分類法カウントを処理するための最良の方法は何ですか?
私は時々同じようなことにぶつかる。カスタム投稿タイプと分類法を使用したときに行ったことは次のとおりです。
そうすることで、私がカスタムオブジェクトで遭遇した奇妙な問題と、ワードプレスのregister_ *関数に関するドキュメンテーションがinitの間にそれらを確実に登録するべきであるというメモを排除しました。
それらを手動でリンクしない場合は、それらの間で適切にやり取りすることもできないこともあります。また、update_callback_countはやり取りの一部なので、initの前に10まですべてのオブジェクトを登録してから関連付けます。 10の後(または上).
add_action('init', do_create_taxonomies, 7);
function do_create_taxonomies() {
# setup taxonomies as array of key => options arrays
foreach ( $taxonomies as $slug => $options ) {
register_taxonomy("{$slug}", null, "{$options}");
}
}
add_action('init', do_create_post_types, 8);
function do_create_post_types() {
# setup post types as array of key => options arrays
foreach ( $post_types as $slug => $options ) {
register_post_type("{$slug}", "{$options}");
}
}
add_action('init', do_bind_post_types_to_taxonomies, 11);
function do_bind_post_types_to_taxonomies() {
# setup relationships as Tax_slug => array( post_type_slugs )
foreach ( $relationships as $tax_slug => $post_types ) {
if ( is_array($post_types) ) {
foreach ( $post_types as $post_type_slug ) {
register_taxonomy_for_object_type( "{$tax_slug}", "{$post_type_slug}" );
}
} else {
register_taxonomy_for_object_type("{$tax_slug}", "{$post_types}");
}
}
}
これで、カスタム投稿タイプと分類法に関するさまざまな奇妙な問題が解決しました。それがうまくいかない場合は、_update_post_term_countがどのように機能するのかを正確に調べるためにソースを掘り下げる価値があるかもしれません...そして代わりに_update_generic_term_countを強制しているかどうかあなたの関係を調べてください。