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


23

私はワードプレスでdrupalサイトを再構築することを検討していますが、システム間の違い、特にcck / fieldとカスタムコンテンツタイプ、および分類法のさまざまな使用方法について頭をかき回しています。

2つのカスタムコンテンツタイプが1つのカスタム分類を共有できるかどうかを知りたい。drupalでは、特定のコンテンツタイプの投稿をユーザーグループに制限できます。その投稿には、1つ以上の他のコンテンツタイプ(すべてのタイプではありません)とのみ共有される分類を含めることができます。

ロールスコープで可能と思われるユーザーアスペクトを除外し、wordpressでこれを実行できますか?カスタム分類を使用したカスタムコンテンツタイプのみを表示しましたが、2つの場所で再作成するか、カテゴリ/タグを介してグローバルに有効にしない限り、2つ以上のカスタムコンテンツタイプ間で特定の分類を共有する方法はありません...

ありがとう、チャド。

回答:


15

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 番目の引数をregister_taxonomy()使用する場合、またはを使用する場合register_taxonomy_for_object_type()は、どちらも同じであるため問題ではありません。どちらも$GLOBALS['wp_taxonomies']配列を受け取り、ポストタイプオブジェクト(タイプ)を割り当てます。

重要な注意点

それらを登録するときに、CTとCPTを相互に登録してください。それ以外の場合は、クエリフック中にその相互接続にアクセスできません。


2
私が見つけた問題の1つは、共有CTが他の場所で使用されると、管理者がCPTの投稿数を正しく表示しないことです。
Meetai.com

従うかどうかわかりません。質問は、CTを複数のCPTに登録することについて尋ねます。この答えは、CPTとCTを相互に登録する方法を示しているように見えます。
そのブラジル人

4

コーデックスから:

タクソノミー

(配列)(オプション)この投稿タイプで使用されるcategoryやpost_tagなどの登録済み分類法の配列。これは、register_taxonomy_for_object_type()直接呼び出す代わりに使用できます 。カスタム分類は、まだ登録する必要がありますregister_taxonomy()

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

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


4

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

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 ) );   
}

これは受け入れられた回答IMOである必要があります。簡潔かつ要点。
FaCE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.