web-dev-qa-db-ja.com

複数のカスタム投稿タイプでカスタム分類を共有できますか?

私はwordpressでdrupalサイトを再構築することを検討しています、そしてまだシステム間の違い - 特にcck/fieldsとカスタムコンテンツタイプと分類法を使うための異なる方法について私の頭を包んでいます。

2つのカスタムコンテンツタイプで1つのカスタム分類法を共有できるかどうかを知りたいです。 Drupalでは、特定のコンテンツタイプの投稿をユーザーのグループに限定することができます。その場合、その投稿は1つ以上の他のコンテンツタイプ(ただしすべてのタイプではない)と共有される分類法を持つことができます。

ロールスクーパーで可能に思われるユーザーの側面を残して、あなたはワードプレスでこれをすることができますか?カスタム分類のカスタムコンテンツタイプしか見たことがありませんが、2つの場所で再作成したり、カテゴリ/タグを通じてグローバルに有効化したりせずに、2つ以上のカスタムコンテンツタイプ間で特定の分類を共有する方法はありません。

ありがとう。

19
Chad Dupuis

CPT間で分類法を共有する

2つのカスタムコンテンツタイプで1つのカスタム分類法を共有できるかどうかを知りたいです。

簡単に言った: はい、彼らはすることができます

共有する方法

このブログ記事 で詳細に説明しているように、 常に登録する必要があります カスタム分類法と投稿の種類 できるだけ早く

登録プロセスをデフォルトの優先度でinitフックにフックされた関数でラップします。

register_taxonomy(
    'some_custom_tax',
    'some_post_type',
    $array_of_arguments
);
register_post_type(
    'some_post_type',
    [
        'taxonomies' => [ 'some_custom_tax' ],
        // other arguments
    ]
);

あなたが2を使用するかどうかは関係ありませんnd register_taxonomy()の引数、またはregister_taxonomy_for_object_type()を使用する場合は、どちらも同じです。これらは$GLOBALS['wp_taxonomies']配列を受け取り、それにpost型オブジェクト(type)を割り当てます。

重要な注意点

登録時にCTとCPTを相互に登録するようにしてください。そうでなければ、クエリフック中にその相互接続にアクセスすることはできません。

12
kaiser

コーデックスから:

タクソノミー

(配列)(オプション)この投稿タイプで使用されるcategoryやpost_tagのような登録された分類法の配列。これはregister_taxonomy_for_object_type()を直接呼び出す代わりに使うことができます。カスタム分類法は依然として register_taxonomy() に登録する必要があります。

投稿タイプを登録するときには、それがサポートする分類法を割り当てるか、または他の時点で register_taxonomy_for_object_type() を使用して分類法を投稿タイプに追加します。

分類は、好きなだけの種類の投稿に割り当てることができます。分類法は特定の投稿タイプに関連付けられていません。

4
s_ha_dum

分類を共有したいすべてのカスタム投稿タイプの配列を渡すことで、これを簡単に達成できました。そのため、私のコードは次のようになりました。

add_action( 'init', 'build_taxonomies', 0 );
 function build_taxonomies() {
    register_taxonomy( 'some_custom_tax', array('some_post_type_1','some_post_type_2'), array( 'hierarchical' => true, 'label' => 'Custom Tax Title', 'query_var' => true, 'rewrite' => true ) );   
}
2
Kevin Ochieng