添付されている投稿タイプAの分類を取得する


13

分類法または用語が与えられた場合、分類法が関連付けられているすべての投稿タイプをプルすることは可能ですか?

たとえば、分類に建て知っcategoryたりして用語を与えられているcategory分類法を、リバースエンジニアに機能があるcategoryの分類ではpost

不要な情報

私は特に投稿タイプを知る必要がある分類用語のいくつかのカスタムフィールドを使用していますが、URLの投稿タイプパラメータが何らかの理由でそこにない場合、問題が発生します。

回答:


12

グローバル$wp_taxonomies変数をのぞくと、関連するオブジェクトタイプが表示されます。

これを実行するより良い方法やコア機能さえあるかもしれませんが、以下を試すことができます:

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' )
{
    global $wp_taxonomies;
    return ( isset( $wp_taxonomies[$tax] ) ) ? $wp_taxonomies[$tax]->object_type : array();
}

次に、デフォルトのセットアップの場合:

$out = wpse_172645_get_post_types_by_taxonomy( 'category' );
print_r( $out );

出力で:

Array
(
    [0] => post
)

8

で逆を行うことができますget_object_taxonomies。と組み合わせて、get_post_types投稿タイプを反復処理し、それぞれに登録された分類をチェックします。

編集 -ダーティグローバルを使用せずに@birgireの関数と同じ出力を生成する例を次に示します。

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' ){
    $out = array();
    $post_types = get_post_types();
    foreach( $post_types as $post_type ){
        $taxonomies = get_object_taxonomies( $post_type );
        if( in_array( $tax, $taxonomies ) ){
            $out[] = $post_type;
        }
    }
    return $out;
}

3

$wp_taxonomiesWordPressにはget_taxonomy()分類法にアクセスする機能があるため(バージョン2.3.0以降のコアでは)、グローバル変数を直接使用する必要はありません。WordPress 4.7.0以降、戻り値の型はWP_Taxonomyプロパティを持つオブジェクトです$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.