ワードプレスの記事に属するタクソノミー(カテゴリーやタグなど)を取得する
ワードプレスでは、タクソノミー(分類)という機能があります。この分類は標準機能では「カテゴリー」や「タグ」、カスタマイズすると「カスタム分類(カスタムタクソノミー)」などがあります。
この機能は記事や固定ページに所属させることができ、管理ページの右側にチェックするリストが表示されます。
今回はこの分類機能について紹介したいと思います。
ポイント
-
ワードプレスでは、タクソノミー(分類)は「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;//タームがマンマ区切りで表示される ?>