エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


get_categories、get_termsでカテゴリとタクソノミーのターム一覧の編集方法

      2017/03/12

get_categories()関数と get_terms()関数

 

カテゴリやタクソノミーのターム一覧を取得する関数

 
WordPressのカテゴリやカスタムタクソノミーのターム一覧を取得する関数は複数存在しています。
 
例えば、「wp_list_categories()」関数。
これは、一覧として HTMLのタグも含めて編集してくれる関数ですので、サイドナビゲーションのウィジェットなどにターム一覧を編集する場合に最適です。
 
それを利用した表示については下記に記事を書いています。
 カスタムタクソノミーのターム一覧をウィジェットにショートコードで編集
 タクソノミーの一覧をショートコードで編集・ソート機能付き・wp_list_categories
 
 
逆に、タームの情報を一覧として表示するのではなく、配列やオブジェクトとして取得して加工して利用する場合には「get_categories()」関数、「get_terms()」関数が便利です。
 
「get_categories()」関数と「get_terms()」関数は取得できる値は同じですが、指定できる値の取得条件は「get_terms()」関数の方が多いため、「get_terms()」関数を使う方がよさそうです。
 
「get_categories()」関数は、カテゴリの値を取得するのに便利なように作られていますが、処理としても内部で「get_terms()」関数を呼び出していますので、「get_terms()」関数を使えるようになっておく方がよさそうです。
 
 
ということで、この記事では「get_terms()」関数を使ったサンプルを紹介します。
 
 

タクソノミーのタームを取得して加工する一例

 
例として、カスタムタクソノミーを条件に検索システムを作りたい、と思った場合の検索条件側を設定する方法です。
 
20160210_01_wp
 
非常に限定的な例ですが(笑)、検索処理を作る場合はカスタムタクソノミーを検索条件にしたいという場合は多いんじゃないかと思います。
早い話が現在そういうシステムを作っていますので、それの作り方の紹介記事ですね。
 

 
 
これを編集するファイルは、「archive.php」などの一覧ページになります。
一覧ページは、カテゴリごと、タクソノミーごとのテンプレートファイルも作成することができますので「WordPressの一覧ページのテンプレートの種類とファイルの設定」を参考にしてください。
 
 
「get_terms()」関数の親子タームを取得する「parent」パラメータを使用して取得する方法も考えました。こちらは子タームまでの取得ですが。
こちらの方がスマートな書き方になると思って書き始めましたが、「get_terms()」関数を何度も実行するため、処理は遅くなると思います。
 

 
 


 

「get_categories()」関数と「get_terms()」関数の違い

 
「get_categories()」と「get_terms()」は、いずれも条件を設定し、その条件に合致するタクソノミーのタームを取得する関数です。
 
ですが、パラメータの指定の方法が少し違うことと、指定できるパラメータの数が違います。
 
 

「get_categories()」と「get_terms()」のパラメータの指定の方法

「get_categories()」と「get_terms()」の標準形は以下の通り。

 
それぞれパラメータを指定する配列の例としては以下の通り。
「$taxonomies」は 1つのみの指定の場合は配列でなくても OKです。

 
 

「get_categories()」と「get_terms()」の両方が指定できる項目

 
taxonomies
タームを取得するタクソノミーを指定します。
get_categories()関数の場合は「category」がデフォルトになります。
 
orderby
ソートするフィールドを指定します。デフォルトは「name」です。
 
order
ソートする順番を指定します。デフォルトは「ASC」です。
 
hide_empty
属する投稿がないタームを取得するか否かを指定します。
 
exclude
除外するターム IDを配列で指定します。
 
include
取得対象にするタームを IDの配列で指定します。指定がない場合はすべてのタームが対象になります。
 
number
取得するタームの最大数を指定します。指定がない場合は全件取得します。
 
parent
親タームの IDを指定し、直近の子(1レベル下の)タームを取得します。「0」を指定するとトップレベルのタームのみを取得します。
 
hierarchical
子タームを持つタームを取得するか、否かを指定します。デフォルトは「1(true)」で、子タームを持つものも取得します。
 
child_of
指定したタームの全ての子孫のタームを取得します。
「parent」は 1レベル下のタームしか取得しませんが、「child_of」はすべての子孫を取得します。
 
pad_counts
子孫のタームの投稿数のカウントを合計するか、否かを指定します。デフォルトは「0(false)」で合計しません。
 
 

「get_terms()」のみ指定できる項目

 
exclude_tree
親タームを指定してそれに属するターム全てを除外する場合に指定します。
 
fields
取得するフィールドを指定します。デフォルトは「all」で全項目を取得します。
 
slug
取得するタームの slugを指定します。
 
childless
階層を持たないタームのみを取得します。
 
get
「all」を指定すると「hide_empty」と「child_of」の指定が無効になります。
 
name__like
ターム名にマッチさせたい文字列を指定します。ターム名に対して「LIKE ‘%string%’」の部分一致検索を実行します。
 
description__like
タームの説明にマッチさせたい文字列を指定します。タームの説明に対して「LIKE ‘%string%’」の部分一致検索を実行します。
 
offset
取得できるタームの何番目から取得するかを指定します。「number」と一緒に使わないと無視されます。
 
search
ターム名、slugにマッチさせたい文字列を指定します。ターム名、slugに対して「LIKE ‘%string%’」の部分一致検索を実行します。
 
cache_domain
クリエをキャッシュする場合に指定します。
 
 

「get_categories()」関数と「get_terms()」関数で取得できる値

 
「get_categories()」関数と「get_terms()」関数では、以下のようなオブジェクトとして値が取得できます。
 

 
 

「get_categories()」関数と「get_terms()」関数のリファレンス

 
「get_categories()」関数と「get_terms()」関数のオフィシャルサイトのリファレンスは以下の場所にそれぞれあります。
 
get_categories()関数は、
  https://wpdocs.osdn.jp/関数リファレンス/get_categories
get_terms()関数
  https://wpdocs.osdn.jp/関数リファレンス/get_terms
 
また、リファレンスには関数の設置場所も記載がありました。
 
get_categories()関数は、
  wp-includes/category.php にあります
get_terms()関数
  wp-includes/taxonomy.php にあります
 
 

カテゴリーやタクソノミーに関連する関数について

 
最後に今回は使いませんでしたが、カテゴリやタクソノミーに関連する関数について書いておきます。
 
the_category()
ループ内で使用して、投稿が属するカテゴリを HTMLに編集された形で取得します。
 
get_the_category()
PostIDを指定して、カテゴリの情報を配列で取得します。
 
wp_list_categories()
条件を指定して条件に合致したカテゴリ、タクソノミーの一覧を HTMLに編集された形で取得します。
 
get_category_link()
カテゴリIDからカテゴリ名とリンクを取得します。
 
get_cat_ID()
カテゴリ名からカテゴリIDとリンクを取得します。
 
get_category_by_slug()
slugからカテゴリ名とカテゴリのリンクを取得します。
 
get_the_term_list()
PostIDを指定して、タクソノミーの情報を HTMLに編集された形で取得します。
 
get_the_terms()
PostIDを指定して、タクソノミーの情報を配列で取得します。

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

WP Reviewを使ってWordPressのレビューサイトを構築

レビューサイトを構築するプラグインです。複数の評価者による評価点投稿やページごとに配色を変更する機能、機能満載なウィジェットなどレビューサイト構築に最適です。

Broken Link Checkerのリンク生死チェックでサイトの品質向上!SEO対策!

Broken Link Checkerは記事内のリンクのリンク切れチェックをし自動的にリンク切れの対処をします。リンク切れは一覧表示されますので手動での処置も可能です。

シンタックスハイライトの5システム比較のまとめ・WordPressでも使える

シンタックスハイライト5種の比較検討のまとめ記事。WordPressで使う目的だがプラグインの比較検討ではないのでどのサイトでも導入可能。

WordPress csvインポート、エクスポートのプラグイン

WordPressから csvファイルをエクスポート、インポートする方法を紹介しています。

FC2からWordPressに引越しの際のデータ加工方法の解説

FC2からWordPressに引越しの際にデータを加工する必要がありますが、その加工方法の詳細を解説。秀丸の正規表現による置換を使い作業時間も軽減する方法や加工のポイントも解説。

Crayon Syntax Highlighterでソースコードをキレイに編集する設定方法

PHP、HTMLなどのソースコードを紹介する際に見やすく編集してくれる Crayon Syntax Highlighterの設定の方法、利用方法の解説です。

Never Let Me Goで会員制サイトの退会機能を実装

会員制サイトで退会する機能を提供するプラグインの設定方法の解説。Theme My Loginなどの会員登録のプラグインと組み合わせて利用します。

WordPressの Google XML Sitemapsで WebMaster Tools用の sitemap.xmlを生成

WordPressの Google XML Sitemapsで WebMaster Tools用の sitemap.xmlを生成する方法を説明しています。

WordPressで WPtouchを入れてモバイルテーマを「OFF」にしたら元に戻れなくなった

WPtouchを入れてモバイルテーマを「OFF」にしたら元に戻れなくなった。これは「wp_footer」の設定に問題があるからだった。

WordPressのおすすめの確認画面付きお問い合わせフォームプラグイン・MW WP Form

MW WP Formは確認画面が付いているオススメのフォームプラグインです。企業サイトを CMSとして構築する際にも利用できる実力派です。