
WordPressのタクソノミーの取得・出力方法メモです。
【タクソノミーについてはこちら】カスタムタクソノミーとは?WordPressでオリジナルの投稿分類を作る
ここでは以下のカスタム投稿・タクソノミーを作ったサンプルで説明します。
- カスタム投稿で「料理レシピ(post_type_recipe)」を作成。
- カスタムタクソノミーで、「食材(ingredients)」「料理名(dishes)」「各国の料理(cuisines)」を作成。
※「」内は「label(name)」です。

get_taxonomies
get_taxonomies() は、サイトにあるタクソノミー情報をまとめて取得します。
サンプルサイトで get_taxonomies() をにどんな情報が入っているか、var_dump() を使って出力した内容がこちらです。
array(11) {
["category"]=>
string(8) "category"
["post_tag"]=>
string(8) "post_tag"
["nav_menu"]=>
string(8) "nav_menu"
["link_category"]=>
string(13) "link_category"
["post_format"]=>
string(11) "post_format"
["wp_theme"]=>
string(8) "wp_theme"
["wp_template_part_area"]=>
string(21) "wp_template_part_area"
["wp_pattern_category"]=>
string(19) "wp_pattern_category"
["ingredients"]=>
string(11) "ingredients"
["dishes"]=>
string(6) "dishes"
["cuisines"]=>
string(8) "cuisines"
}'_builtin' => false を指定すると、WordPressのデフォルトにあるタクソノミー以外(カスタムタクソノミー)を表示させることができます。
$taxonomies = get_taxonomies(array('_builtin' => false));自分で作成したタクソノミーだけになりました。
array(3) {
["ingredients"]=>
string(11) "ingredients"
["dishes"]=>
string(6) "dishes"
["cuisines"]=>
string(8) "cuisines"
}特定のタクソノミーの詳細情報を知りたい場合は、第二パラメーターに ‘object’ を指定します。
// タクソノミー名で指定
get_taxonomies(array('name' => 'ingredients'), 'object');
// ラベルで指定
get_taxonomies(array('label' => '食材'), 'object');以下のコードで中身を確認できます。
<?php $tax_ingredients = get_taxonomies(array('name' => 'ingredients'), 'object'); ?>
<pre><?php var_dump($tax_ingredients); ?></pre>上記コードを利用して、タクソノミー名を出力するコードがこちら。
<?php
$tax = get_taxonomies(array('label'=> '食材'));
$tax_name = $tax[key($tax)];
echo $tax_name;
?>‘object_type’ を使って、特定のカスタム投稿に付いているタクソノミーを取り出すこともできます。
get_taxonomies(array('object_type'=>array('post_type_recipe')));この場合、 get_object_taxonomies() でも代替できます。
get_object_taxonomies
get_object_taxonomies() は、特定の投稿タイプのタクソノミーを取得します。引数に投稿タイプ名を入れます。
$taxonomy_post = get_object_taxonomies('post');
var_dump( $taxonomy_post );その投稿に登録されているタクソノミーを出力
$taxonomy_names = get_object_taxonomies(get_post());投稿に登録されている全てのタクソノミーのラベルと説明文を出力
<?php
$taxonomy_objects = get_object_taxonomies('post_type_recipe' ,'objects');
foreach($taxonomy_objects as $taxonomy_object) {
echo '<h4>'. esc_html($taxonomy_object->label) .'</h4>';
echo '<p>'. esc_html($taxonomy_object->description) .'</p>';
}
?>get_query_var
個別ページやアーカイブページでは get_query_var() でカスタムタクソノミー名を取得できます。
<?php
$taxonomy = get_query_var('taxonomy');
$post_type = get_taxonomy($taxonomy)->object_type[0];
?>WP_Query クラスを使ってタクソノミーに属する記事を一覧表示
カスタム投稿「料理レシピ」の、「食材」タクソノミーにある「野菜」タームの記事のタイトルを取得・出力した例です。
<?php
$args = array(
'post_type' => 'post_type_recipe',
'tax_query' => array(
array(
'taxonomy' => 'ingredients',
'field' => 'slug',
'terms' => 'yasai'
)
)
);
$the_query = new WP_Query($args);
?>
<?php
while ($the_query->have_posts()):
$the_query->the_post();
?>
<!-- 表示させたい投稿内容 -->
<h1><?php the_title(); ?></h1>
<!-- 投稿表示終了。メインクエリの値に戻す -->
<?php endwhile; wp_reset_postdata();?>カテゴリー : WordPress