まず以下は、すべてのカスタムタクソノミー名を取得するコードです。
$args = array ( 'public' => true, '_builtin' => false ); $taxonomies = get_taxonomies( $args, 'names' ); foreach ( $taxonomies as $taxonomy_name ) { echo '<p>' . $taxonomy_name . '</p>'; }
第一引数には条件となるパラメーター、第二引数にはnamesかobjectsのどちらかを入れます。namesを引数にした場合は上記のようにタクソノミー名だけを値とした配列が返ってきます。objectsにするとオブジェクトを値とした配列が返ってきます。ちゃんと確認したわけではないですが、たぶんregister_taxonomy()で設定した値はすべて取得できるのではないかと思います。以下のようにpost_type、タクソノミーラベル[label]、タクソノミー名[name]をセットで取得することもできます。
$args = array ( 'public' => true, '_builtin' => false ); $taxonomies = get_taxonomies( $args, 'objects' ); foreach ( $taxonomies as $taxonomy ) { echo '<p>post_type=' . $taxonomy->object_type[0] . ': ' . $taxonomy->name . ' => ' . $taxonomy->label . '</p>'; }
post_typeからタクソノミー情報を取得したい時は、object_typeというキーに配列でpost_typeを指定して絞り込みます。
$args = array ( 'public' => true, 'object_type' => array ( 'memo' ) ); $taxonomies = get_taxonomies( $args, 'objects' ); foreach ( $taxonomies as $taxonomy ) { echo '<p>' . $taxonomy->name . ' => ' . $taxonomy->label . '</p>'; }
上記の例にはありませんが、第三引数にorを渡せばOR検索による絞り込みになります。