ワードプレスのwp_get_post_terms関数の使用方法・解説

概要

wp_get_post_terms関数は、投稿記事のタクソノミー情報を取得するための関数です。具体的には、指定した投稿に関連付けられているターム(カテゴリ、タグ、カスタムタクソノミーなど)を取得します。この関数は、投稿のメタデータを表示する際や、カスタムクエリを作成する際に非常に便利です。

この関数がよく使われる場面の例は以下の通りです:
1. 投稿の記事に関連するカテゴリを取得する。
2. 投稿に設定したタグを取得する。
3. カスタム投稿タイプのタクソノミー情報を取得する。
4. 特定の条件に基づいて投稿をフィルタリングする。
5. 投稿ごとのタクソノミー情報を表示する。
6. カスタムタクソノミーのタームリストを生成する。
7. タクソノミータームを用いたSEO対策を行う。
8. タクソノミーを用いたナビゲーションメニューを構築する。

構文

wp_get_post_terms( int $post_id, string|array $taxonomy, array $args = array() )

パラメータ

  • $post_id (int) : タームを取得したい投稿のID。
  • $taxonomy (string|array) : 取得したいタクソノミーの名前(例えば ‘category’ や ‘post_tag’)。複数のタクソノミーを配列で指定することも可能。
  • $args (array) : 追加の引数(オプション)。’orderby’, ‘order’, ‘hide_empty’ など。

戻り値

タクソノミーのタームオブジェクトを含む配列。タクソノミーが存在しない場合は空の配列を返します。

関連する関数

使用可能なバージョン

  • WordPress 3.0.0以降

コアファイルのパス

wp-includes/taxonomy.php

この関数のアクションでの使用可能性

アクション名 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

  1. 投稿のカテゴリを取得して表示する
$post_id = 1; // 取得する投稿のID
$categories = wp_get_post_terms( $post_id, 'category' );

foreach ( $categories as $category ) {
    echo $category->name . ', ';
}

このサンプルコードでは、指定した投稿のカテゴリを取得し、それを表示しています。

  1. 投稿のタグを取得してリスト表示する
$post_id = 2; // 取得する投稿のID
$tags = wp_get_post_terms( $post_id, 'post_tag' );

if ( ! empty( $tags ) ) {
    echo '<ul>';
    foreach ( $tags as $tag ) {
        echo '<li>' . $tag->name . '</li>';
    }
    echo '</ul>';
}

このサンプルコードは、指定した投稿に紐づくタグをリスト形式で表示します。

  1. 複数のタクソノミーを取得する
$post_id = 3; // 取得する投稿のID
$taxonomies = array( 'category', 'post_tag' );
$terms = wp_get_post_terms( $post_id, $taxonomies );

foreach ( $terms as $term ) {
    echo $term->taxonomy . ': ' . $term->name . '<br>';
}

この例では、カテゴリとタグの両方を取得し、各タームの種別と名称を表示します。

  1. タクソノミーを用いて特定の投稿をフィルタリングする
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'news',
        ),
    ),
);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
        echo '<br>';
    }
}
wp_reset_postdata();

このサンプルコードは、特定のカテゴリー(ここでは’news’)に関連する投稿を取得し、そのタイトルを表示します。

  1. 投稿のカスタムタクソノミーを取得する
$post_id = 4; // 取得する投稿のID
$custom_taxonomy = 'custom_taxonomy'; // 任意のカスタムタクソノミー名
$terms = wp_get_post_terms( $post_id, $custom_taxonomy );

if ( ! empty( $terms ) ) {
    echo 'Custom Taxonomy Terms: ';
    foreach ( $terms as $term ) {
        echo $term->name . ', ';
    }
}

このサンプルコードは、特定のカスタムタクソノミーに関連するタームを取得し、それを表示します。

この関数について質問する


上の計算式の答えを入力してください