www.bring-flower.com Open in urlscan Pro
162.43.117.62  Public Scan

URL: https://www.bring-flower.com/blog/get-terms/
Submission: On December 12 via api from US — Scanned from JP

Form analysis 1 forms found in the DOM

GET https://www.bring-flower.com/

<form role="search" method="get" id="searchform" class="searchform" action="https://www.bring-flower.com/">
  <div class="search-box-inner">
    <h2 class="blog-search"><label for="s">ノウハウ検索</label></h2>
    <div class="search-box">
      <input type="text" placeholder="キーワード入力" value="" name="s" id="s">
      <button type="submit">検索</button>
    </div>
  </div>
</form>

Text Content

 * services
    * SEO対策・コンサルティング
    * ホームページ制作
    * ホームページ運用・更新サポート
    * 素材としての写真撮影・動画撮影
    * プロモーション動画制作
   
    * UX向上施策コンサルティング
    * UXデザイン専門家の育成支援

 * works
    * 制作
    * SEO対策

   
 * products
    * SEOに強いAIライティングツール
    * SEOに強いWordPressオリジナルテーマ

 * about
 * know-how
 * 
 * contact
   * 問い合わせフォーム
   * SEO無料診断
   * 電話

MENU

 * services
   * SEO対策・コンサルティング
   * ホームページ制作
   * ホームページ運用・更新サポート
   * プロモーション動画制作
   * 素材としての写真撮影・動画撮影
   * UX向上施策コンサルティング
   * UXデザイン専門家の育成支援
 * works
   
 * about
 * products
 * know-how

 * 問い合わせフォーム
 * 無料SEO診断
 * 電話
 * 

 * ホーム
 * ノウハウ
 * ホームページ制作
 * WordPress
 * WordPressで投稿ページに紐づくなど指定した条件のタームを取得する方法


 * Facebook
 * X
 * hatena
 * Pocket
 * LINE
 * URLコピーコピー
   しました

WordPress


WORDPRESSで投稿ページに紐づくなど指定した条件のタームを取得する方法

最終更新日:2023/07/26
 * Facebook
 * X
 * hatena
 * Pocket
 * LINE
 * URLコピーコピー
   しました

WordPressで、例えば「特定のタクソノミーに属する」「投稿ページに紐づく」などの指定条件でカスタムタクソノミーのタームを取得する様々な方法をご紹介します。

非常に似た名称の関数が多いので、頭がこんがらがります。なので、自分のためにも整理しました。全て覚える必要もなく、他の関数を用いても実現できるものも多いので、自分にあったものを見つけてそれを使う、という風に決めた方がよいかもしれません。

なお、この記事の中での記述の凡例です。

$taxonomy:例えばblog_catなどのタクソノミー名。
$taxonomies:上述のタクソノミー名を配列で複数指定できる場合

目次

 1. タクソノミーとタームとは?
 2. 投稿ページに応じたタームの取得
    1. get_the_terms
    2. wp_get_post_terms
    3. wp_get_object_terms
    4. the_terms
 3. アーカイブページ(archive.php/taxonomy.php)で取得
    1. get_taxonomy
    2. single_term_title
 4. その他の指定
    1. get_terms
    2. get_categories
    3. wp_list_categories
    4. get_the_term_list
    5. wp_get_object_terms
    6. get_term_by
 5. 子タームを取得する場合について
    1. get_terms
    2. get_term_children
 6. 紛らわしい関数
    1. get_term
 7. まとめ




タクソノミーとタームとは?

タクソノミーは、通常の投稿でいうカテゴリーやタグのことで、そのような器自体を指します。タームは、タクソノミーの中の項目のことです。

詳しくは次の記事で解説しています。

カテゴリー、タグ、タクソノミー、タームの違いについてどこよりも分かりやすい解説を試みる


投稿ページに応じたタームの取得


GET_THE_TERMS

関数リファレンス/get the terms

 1. <?php
 2. $terms = get_the_terms( $post->ID, 'タクソノミー名' );
 3. $terms = get_the_terms( $post->ID, array( 'タクソノミー名1', 'タクソノミー名2' ) );
 4. ?>

投稿ページ(single.php)において、その投稿に関連するタームを取得する関数として、get_the_termsがあります。
タクソノミー名は、例えばnews_catなどです。スラッグ名なので、タクソノミースラッグとも呼ばれます。
出力は次のように行います。[0]というのは配列の1つ目を取り出す記述です。当該ページ関連のものはWordPressの仕様として、配列の1つ目に格納されているということです。

 1. <?php
 2. //単体を出力
 3. echo $terms[0] -> slug;
 4. //複数を出力
 5. foreach( $terms as $term ) {
 6.    echo $term->slug;
 7. }
 8. ?>

上記のタームを出力する$term[0]ですが、親タームがある場合はそちらを出力してしまいます。親タームを持つ可能性がある場合は次のようにすることで、子タームのみ出力することが可能です。

 1. <?php
 2. $children = get_term_children($term[0]term_id, $taxonomy);
 3. if( $children ):
 4.    echo $term[1]->slug;
 5. else:
 6.    echo $term[0]->slug;
 7. endif;
 8. ?>


WP_GET_POST_TERMS

関数リファレンス/wp get post terms

 1. <?php
 2. $terms = wp_get_post_terms( $post->ID, $taxonomy, $args );
 3. ?>

$argsは指定しなくても大丈夫ですが、それだとget_the_termsと変わりません。$argsを指定することで表示順を変えることができます。$args省略できるんだから、get_the_termsいる?という疑問があります。


WP_GET_OBJECT_TERMS

関数リファレンス/wp get object terms

 1. <?php
 2. $terms = wp_get_object_terms( 
 3.      array( 1, 2 ),  // ポストID
 4.      array( 'news_cat', 'news_tag' ),  //タクソノミー名(スラッグ)を指定
 5.      $args
 6. );
 7. ?>

オブジェクト(投稿)のIDとタクソノミー名を指定し、そのタームを取得する関数です。


THE_TERMS

関数リファレンス/the terms

 1. <?php
 2. the_terms( $post->ID, 'タクソノミー名', 'カテゴリー: ', ' / ' );
 3.  // 出力結果 カテゴリー: SEO / UX / WordPress
 4. ?>

出力の文字列まで指定できる関数です。あまり使わなそうですね


アーカイブページ(ARCHIVE.PHP/TAXONOMY.PHP)で取得


GET_TAXONOMY

関数リファレンス/get taxonomy

 1. <?php
 2. get_taxonomy( $taxonomy );
 3. ?>

タクソノミーのメタデータが入ったオブジェクトが取得されます。
例えば、ターム名を表示したい場合は次のようにします。

 1. <?php
 2. $obj = get_taxonomy( $taxonomy );
 3. echo esc_html( $obj->singular_label);
 4. ?>


SINGLE_TERM_TITLE

関数リファレンス/single_term_title

 1. <?php
 2. single_term_title( $prefix, $display );
 3. ?>

$prefixには、タイトルの前に出力するテキストを指定します。何も出力しない場合は''とします。
$displayは、タイトルを表示する場合はtrue、PHP で使えるようにタイトルを返す場合はfalseとします。


その他の指定


GET_TERMS

関数リファレンス/get terms

 1. <?php
 2. $taxonomies = array( 
 3.     'blog_cat',
 4.     'blog_tag',
 5. );
 6. $terms = get_terms( $taxonomies, $args );
 7. ?>

タクソノミーを配列で複数指定してターム一覧を取得できます。
1つだけ指定の場合は配列ではなくて大丈夫です。
$argsは省略可能で、省略しない場合は取得順や、項目が一つもないタームを取得するかどうか、などを指定できます。

例えば、項目が一つもない(中身が空の)タームを取得する場合は次のように書きます。

 1. <?php
 2. get_terms( $taxonomy, 'hide_empty=0' );
 3. ?>

または、次のように書いても中身が空のタームの取得がされます。

 1. <?php
 2. $args = array(
 3.     'orderby' => 'id',
 4.     'order' => 'ASC',
 5.     'hide_empty' => false
 6. );
 7. get_terms( $taxonomy, $args );
 8. ?>

よく似た関数名に上記でご紹介済みのget_termとget_the_termsがあります。


GET_CATEGORIES

関数リファレンス/get categories

 1.  <?php
 2.  $args = array(
 3.     'orderby' => 'name',
 4.     'order' => 'ASC',
 5.     'taxonomy' => 'blog_cat'
 6.  );
 7.  $terms = get_categories($args);
 8.  foreach($terms as $term): ?>
 9.     echo $term->name;
 10. <?php endforeach; ?>
 11. ?>

こちらは結論、使う場面はないと思います。何故なら、配列の$argsで指定できる条件がget_termsより少ないためです。タクソノミーの指定も配列の中で行わなければいけません。


WP_LIST_CATEGORIES

テンプレートタグ/wp list categories

 1. <?php
 2. wp_list_categories( $args );
 3. ?>

こちらは、ul, li,
aの各要素付きで、各タームへのリンク付きリストをHTMLで出力してくれる関数です。クラス名も勝手に付与されます。カスタマイズ可能ですが、結局get_terms使った方が勝手が良いので、私は使ったことがありません。

例えば特定のタクソノミーのターム一覧を、項目の有無に関わらず取得する場合は次の記述になります。

 1. <?php
 2. wp_list_categories ( array(
 3.    'taxonomy' => 'blog_cat',
 4.    'hide_empty' => 'false'
 5. ));
 6. ?>


GET_THE_TERM_LIST

関数リファレンス/get the term list

 1. <?php
 2. get_the_term_list( $id, $taxonomy, $before, $sep, $after );
 3. ?>

指定された投稿IDとタクソノミーに対するタームのリストをul, li, aの各要素付きで、各タームへのリンク付きリストをHTMLで出力してくれる関数です。


WP_GET_OBJECT_TERMS

関数リファレンス/wp get object terms

 1. <?php
 2. $terms = wp_get_object_terms( 
 3.      array( 1, 2 ),  // ポストID
 4.      array( 'news_cat', 'news_tag' ), 
 5.      $args
 6. );
 7. ?>

オブジェクト(投稿)のIDとタクソノミー名を指定し、そのタームを取得する関数です。


GET_TERM_BY

関数リファレンス/get term by

 1. <?php
 2. $term = get_term_by( $field , $value , $taxonomy ); 
 3. ?>

$fieldには、 ‘id’, ‘slug’, ‘name’, ‘term_taxonomy_id’のいずれかを指定できます。
$valueは、$fieldで指定した値です。例えばslugを指定したら、slugの名称が入ります。
以下は、news_catというタクソノミーの中でirというスラッグのついたタームを取得する例です。

 1. <?php
 2. $term = get_term_by( 'slug' , 'ir' , 'news_cat' ); 
 3. ?>


子タームを取得する場合について

子タームの取得には、上記で紹介済みのget_termsが利用できます。


GET_TERMS

出力例:

 1. <?php
 2. $term_children = get_terms( $taxonomy, array(
 3.    'child_of' => $term_id,
 4.    'orderby' => 'none'
 5. ));
 6. foreach( $term_children as $term_child ): ?>
 7.    echo esc_html($term_child->name);
 8. endforeach;


GET_TERM_CHILDREN

関数リファレンス/get term children

子タームの取得には、このget_term_childrenという関数が用意されてますが、これだと取得の順番の指定ができません。

また、こちらの関数を用いた場合は、get_term_byを用いなければタームの取得までできません。

現在表示中のページにおける子タームを取得する場合は、get_the_termsのところに記載していますので、そちらをご参照ください。

 1. <?php
 2. $term_childeren = get_terms_children( $term->term_id, $taxonomy );
 3. foreach( $term_children as $child ):
 4. $term_child = get_term_by( 'id', $child->term_id, $taxonomy );
 5.    echo esc_html($term_child->name);
 6. endforeach;

子タームのみ出力する

上記のget_terms_childrenを用いて次のようにして子タームのみ出力するということができます。

 1. <?php
 2. $check = get_term_children( $term->term_id, $taxonomy );
 3. if ( empty($check) ):
 4.    echo esc_html($term->name);
 5. endif;


紛らわしい関数

次のget_termはタームを取得できそうな関数名ですが、タームを指定してそのタームの情報を取得できる関数ということで、紛らわしいので整理のため、ここに掲載しておきます。


GET_TERM

関数リファレンス/get term

 1. <?php
 2. $term = get_term( 'ターム名', 'タクソノミー名' );
 3. ?>

ターム名とタクソノミー名を指定してそのタームの情報を取得します。


まとめ

WordPressでタームの一覧を取得する方法をご紹介しました。全て覚える必要はないので、自分にとって使い勝手の良いものを見つけるのが良いと思います。


 * Facebook
 * X
 * hatena
 * Pocket
 * LINE
 * URLコピーコピー
   しました

BringFlower
稲田 高洋(Takahiro Inada)

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有、数年間ウェブアクセシビリティ基盤委員も務める。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。
2022年3月にBringFlowerを開業し、SEOコンサル、デザイン、ウェブ制作を一手に受ける。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。
プロフィール詳細

ノウハウ一覧



ノウハウ検索

検索
ノウハウ一覧


カテゴリー

 * SEO105
 * AI(人工知能)9
 * ホームページ制作76
   * アクセシビリティ6
   * WordPress35
   * HTML&CSS13
   * JavaScript22
   * PHP4
   * サイト制作プロセス・運用7
 * UX6




同じカテゴリーの他の記事


WORDPRESSの投稿が属するカテゴリーとタグをそれぞれ分けて取得する方法

WordPressで記事一覧を表示する際や、記事の詳細ページに、その記事が属するカテゴリーやタグを表…<続きをみる>


WORDPRESSの投稿一覧にカテゴリーとタグ(ターム)を取得・表示する方法

WordPressでブログなどの投稿一覧をサイトに表示する際に、その投稿につけたカテゴリ―やタグを表…<続きをみる>


【プラグインなし】カスタムフィールドの値で絞り込み:ORとANDの組み合わせのある複雑な条件

プラグインなしでWordPressのカスタムフィールドの値で絞り込む方法です。複数のカスタムフィール…<続きをみる>


WORDPRESSで2ページ目が表示されない場合の対処

WordPressのページネーションで2ページ目以降が表示されず困ってますか?調べると色々出てきます…<続きをみる>


カテゴリー(ターム)に画像などの入力項目をプラグインなしで追加する方法

WordPressのカテゴリー(ターム)にデフォルトで用意されている「名前」「スラッグ」「親カテゴリ…<続きをみる>


WORDPRESSで画像/ファイルアップロード(メディアアップローダー)の項目をプラグインなしで作成する方法

WordPressで、画像アップロードの項目をプラグインなしで追加する方法と、画像だけではなく、PD…<続きをみる>

View More

 * メール
 * 電話

資産となるホームページづくりを


BringFlower サービス プロダクト プロフィールなど 対応ジャンル 対応エリア Information ニュース 掲載メディア ノウハウ
サイトポリシー プライバシーポリシー Contact 問い合わせフォーム SEO無料診断 070-3784-5716

Copyright© BringFlower All rights reserved.