回答:
グローバル$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
)
で逆を行うことができます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;
}
$wp_taxonomies
WordPressにはget_taxonomy()
分類法にアクセスする機能があるため(バージョン2.3.0以降のコアでは)、グローバル変数を直接使用する必要はありません。WordPress 4.7.0以降、戻り値の型はWP_Taxonomy
プロパティを持つオブジェクトです$object_type
$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );