BLOG
25年新卒 WEBエンジニア インターンシップ 受付中

【WordPress】ターム情報・カスタム投稿情報を取得する方法

更新日:2021/12/24


WordPressの関数ってびっくりするほど名前が似ていますよね。
今でもかなり混乱するのですが、初めてWordPressを触った時は混乱しすぎて目が回りそうになりました…(笑)
いつの日か慣れることを願いながら、今回は混乱しやすいターム情報やカスタム投稿の情報を取得する方法をまとめました。
ぜひ最後までご覧ください。

タームとは

よくWordPressではタームやタクソノミーなどの用語をよく聞きますよね。
名前が似ていますし、違いがわかりづらいので表で説明していきます。

タクソノミー それぞれの投稿を分類するものをすべて。カテゴリーやタグ、カスタムタクソノミーなど
ターム タクソノミーで分類されたものの項目すべて。

タクソノミーで分類された中身はすべてタームということです。
タームから広範囲の情報を獲得することができるので、投稿情報を取得したいという時にはタームを利用しましょう。

カスタム投稿とは

WordPressにデフォルトで入っている投稿や固定ページではなく、新しく投稿タイプを作成したものをカスタム投稿タイプといいます。
デフォルトの投稿や固定ページとは全く別のオリジナルの投稿タイプを作成することができるため、特定のコンテンツ複数作成したい時に便利です。
カスタマイズもデフォルトの投稿や固定ページと同じことができますので、その点も魅力的です。

カスタム投稿の作成方法については以下記事をご覧ください。

【WordPressカスタム投稿】記事一覧・詳細を実装してみよう(前編)

ターム情報を取得する方法

WordPressの関数は便利なものが多いですが、関数名が似ているのでつい調べてしまいます。
数ある関数の中で、今回はターム情報を取得できる関数を数個紹介します。

並べてみるとさらに似ているように感じますが、目的に合わせて使い分けましょう。

  • get_term( $term_id, $taxonomy )

    タームIDまたはオブジェクトタクソノミーから指定したタームの情報を取得します

    get_term()は、入力したタームID・タクソノミーに該当するターム情報を1つだけ取得します。

    戻り値は以下です。

    term_id タームID
    name 名前
    slug スラッグ
    term_group グループID
    term_taxonomy_id タクソノミーID
    taxonomy タクソノミー名
    description 説明
    parent 親カテゴリーID
    count 投稿数

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

  • get_terms( $taxonomy, $args )

    指定したタクソノミーのターム情報を取得します

    get_terms()は、入力したタクソノミーのターム情報を全て取得します。
    $argsを指定してオプションをつけて取得することも可能です。
    該当するすべてのターム情報を取得できるのでカテゴリー一覧などを作りたい時などに使用します。
    カテゴリー一覧を作成するとこのようなサイドバーが作成できます。

    戻り値は以下です。

    term_id タームID
    name 名前
    slug スラッグ
    term_group グループID
    term_taxonomy_id タクソノミーID
    taxonomy タクソノミー名
    description 説明
    parent 親カテゴリーID
    count 投稿数

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

  • get_the_terms( $post_id, $taxonomy )

    投稿IDタクソノミーからターム情報を取得します

    get_the_terms()ではタームIDではなく投稿IDからターム情報を取得します。
    get_terms()のように指定されたすべてのターム情報を取得するのではなく、各投稿に割り当てられているターム情報のみ取得します。
    このように投稿のカテゴリーなどを取得できます。

    戻り値は以下です。

    term_id タームID
    name 名前
    slug スラッグ
    term_group グループID
    term_taxonomy_id タクソノミーID
    taxonomy タクソノミー名
    description 説明
    parent 親カテゴリーID
    count 投稿数

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

  • get_term_by( $field, $value, $taxonomy )

    タームIDスラッグ名前などとタクソノミーから該当するものを取得します

    get_term_by()では指定した値をタームの全データベースから検索し、該当するものをすべて取得します。
    特定の投稿情報を取得するときなどに使えるのではないかと思います。
    get_term_by()を指定する際に使うパラメーターについて以下テーブルにまとめました。

    $field ‘id’, ‘slug’, ‘name’, ‘term_taxonomy_id’ のいずれかを指定
    $value $fieldで指定したいずれかの値を指定
    $taxonomy タクソノミー名を指定

    戻り値は以下です。

    term_id タームID
    name 名前
    slug スラッグ
    term_group グループID
    term_taxonomy_id タクソノミーID
    taxonomy タクソノミー名
    description 説明
    parent 親カテゴリーID
    count 投稿数

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

  • get_term_children( $term_id, $taxonomy )

    投稿IDタクソノミーから子孫ターム情報を取得します

    get_term_children()は、入力したタームID・タクソノミーに該当する子孫ターム情報をすべて取得します。
    カテゴリーの構成が複雑になった時に使いたいですね。

    戻り値は以下です。

    ID 子孫タクソノミーのID

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

  • get_term_link( $term, $taxonomy )

    タームIDまたはオブジェクトタクソノミーから指定されたタームのアーカイブページへのパーマリンクを取得します

    get_term_link()は指定したタームのアーカイブページ(一覧ページ)のURLを取得します。
    get_terms()で紹介したようなカテゴリー一覧にリンクをつけたい!という時に使えます。

    get_terms( $taxonomy, $args )

    不正なURLを防ぎ、無害化をするためにesc_url()と一緒に使いましょう。

    戻り値は以下です。

    URL 指定したタームのアーカイブページ(一覧ページ)のURL

    ▼関数リファレンス
    関数リファレンス/get term link

  • the_terms( $id, $taxonomy, [オプション : $before, $sep, $after] )

    投稿IDタクソノミーからタームを出力します

    the_terms()は指定した投稿のターム(カテゴリー)を文字列として出力します。
    タームだけ取得したいときや、ターム一覧を作りたい時に便利です。
    パラメーターについて以下テーブルにまとめました。

    $id 投稿 ID
    $taxonomy タクソノミー
    $before 先頭のタームの前に表示する文字列
    $sep ターム(およびリンク)を区切る文字列
    $after 最後のタームに続けて表示する文字列

    戻り値はなく、そのまま出力されます。

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

  • get_queried_object()

    現在クエリされているもののオブジェクトを取得します。

    get_queried_object()は、ページのリクエストに応じてオブジェクトを取得します。
    タクソノミーページで情報を取得したい時に便利です。
    表示中のページとその取得値についてまとめました。

    単一投稿ページ 投稿情報
    固定ページ 固定ページ情報
    アーカイブページ タクソノミー情報
    投稿タイプアーカイブページ 投稿タイプ情報
    タクソノミーページ 現在クエリ中のターム情報

    戻り値は各ページによってさまざまですが、今回はタクソノミーページでの戻り値を紹介します。

    term_id タームID
    name 名前
    slug スラッグ
    term_group グループID
    term_taxonomy_id タクソノミーID
    taxonomy タクソノミー名
    description 説明
    parent 親カテゴリーID
    count 投稿数
    filter フィルター
    term_order サイトすべてを対象とした通し番号

    ▼関数リファレンス
    関数リファレンス/get queried object

カスタム投稿を取得する方法

カスタム投稿ではターム情報を使用して投稿を取得することができます。
そのため、「ターム情報を取得する方法」で取得したターム情報を活用することもできます。
ターム情報から投稿を取得する方法を紹介する前に、基本的なサブループについて確認しておきましょう。

カスタム投稿を使用する場合はかならず、投稿タイプを指定します。
その投稿タイプを利用し、サブループを作成してカスタム投稿を表示させましょう。
また条件を加えていくことにより取得したい投稿のみに絞れます。

サブループを作成する前に、今回取得する投稿についての情報を確認します。

投稿タイプ(post_type) product(function.php で確認しましょう)
表示数(post_per_page) すべて表示する
表示順(orderby) 投稿された日付順

上記の情報を踏まえて、まずは基本的なサブループを作成してみます。

メインループに影響を及ぼさないように、ループ終了後にwp_reset_postdata()を記述しましょう。

【応用編】パラメーター : tax_query

基本的なサブループが理解できたところで、パラメーター : tax_queryを使用してターム情報から投稿を取得してみましょう。
まずはtax_queryについて軽く説明します。

tax_queryは、特定のカスタム投稿タイプの中の、特定のカテゴリーの投稿のみ取得できます。
このカテゴリーの投稿だけ表示させたい!という時に便利でよく使います。

それでは早速tax_queryを使用して、サブループの条件を作成しましょう。

条件が作成出来たら、あとはループを回すだけですね!

このようにパラメーターで条件を付けることによって、自由自在に投稿を取得することができます。
使用できるパラメーターをまとめてくれているサイトがあるので、是非チェックしてみてください。

いっつも忘れるWP_Queryの使用方法とパラメーター一覧。がっつり整理してみた

まとめ

今回はターム情報とカスタム投稿の情報を取得する方法を紹介させていただきました。
どちらもWordPressをカスタマイズする上では必要不可欠のため、頭の片隅に置いておくと良いと思います。
紹介した関数に限らず、気になった関数は試しに使ってみると新たな発見があるかもしれませんね。
以上、最後まで読んでいただきありがとうございました。

FOLLOW US