Warning: Undefined variable $allowed_br_tag in /home/mura0403/creators-group.ws/public_html/ws/wp-content/themes/original/singular.php on line 446
ワードプレスの記事に属するタクソノミー(カテゴリーやタグなど)を取得する
ワードプレスでは、タクソノミー(分類)という機能があります。この分類は標準機能では「カテゴリー」や「タグ」、カスタマイズすると「カスタム分類(カスタムタクソノミー)」などがあります。
この機能は記事や固定ページに所属させることができ、管理ページの右側にチェックするリストが表示されます。
今回はこの分類機能について紹介したいと思います。
ポイント
-
ワードプレスでは、タクソノミー(分類)は「taxonomy」、分類の各項目は「term」と命名されている
-
タームはカテゴリーやタグなど同じ関数get_the_terms()で取得でき、$taxonomyのパラメーターを変えることで変更できる
-
タームは複数(配列)データなので、foreachなどで展開させる必要がある
ワードプレスのカテゴリーやタグなどの分類機能について理解しよう
ワードプレスは、標準の分類機能で、記事にカテゴリーやタグなどの選択する機能が存在します。しかしワードプレス上のカテゴリーと世の中で言うカテゴリーは認識ががずれている場合があります。
世の中の「カテゴリー」と表現する場合、分類1つ1つの項目を示すことが一般的です。
しかし、ワードプレスなどのCMSの場合は少し異なります。
ワードプレスの場合、分類の種類1つをカテゴリーと呼び、分類の項目のことをタームと表現します。
カテゴリーの各分類項目のことをカテゴリータームと呼ぶこともあります。
カテゴリー等分類の認識をワードプレス的に理解しよう
ワードプレス上の分類は下のように種類を指します。カテゴリー(タクソノミー)タームと混在しないように気を付けよう。
(カテゴリー)※分類の種類がカテゴリー
・ターム1
・ターム2
・ターム3
(タグ)※分類の種類がタグ
・ターム1
・ターム2
・ターム3
カテゴリーやタグ、カスタム分類は同じ関数で取得ができる
現在の記事に属するタームを取得する場合の基本関数は下のコードで取得できる。記事に属するタームは複数選択ができる仕様になっているため、1つでも複数形(配列)になるので注意が必要です。
<?php $terms = get_the_terms( $id, $taxonomy ); ?>
- ※$id:記事の投稿ID
- ※$taxonomy:categoryなど
サンプルコード
下のコードは投稿記事内のループ内で、投稿IDからタクソノミー(カテゴリー)を取得してカテゴリーリストを表示させるサンプルコードです。「$taxonomy」を書き換えることでカスタム分類やタグに変更が可能です。
<?php
$taxonomy = 'category';//$taxonomyは初期値がないため、タクソノミーのSLUGを指定する
$post_id = '';
$post_in_terms = array();
$term = array();
$post_term_list = array();
$post_category = '';
//get
$post_id = get_the_ID();//記事IDを取得する
$post_in_terms = get_the_terms( $post_id, $taxonomy );;//記事IDからカテゴリーを配列で取得する
if(!empty($post_in_terms))://カテゴリーが1件以上あったときの処理
foreach($post_in_terms as $term)://カテゴリーは配列関数なのでforeachを使う
$post_term_list[] = esc_html($term -> name);//category名を取得して配列に格納する
/*
//取得できる配列
//配列から好きなデータを取得が可能
stdClass Object
(
[term_id] =>
[name] =>
[slug] =>
[term_group] =>
[term_order] =>
[term_taxonomy_id] =>
[taxonomy] =>
[description] =>
[parent] =>
[count] =>
[object_id] =>
)
*/
endforeach;
if(!empty($post_cat_list))://カテゴリー名をカンマ区切りで変数にする
$post_category = implode(',', $post_term_list );//配列データを連結させる
endif;
endif;//END カテゴリ
echo $post_category;//タームがマンマ区切りで表示される
?>