概要
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 |
サンプルコード
- 投稿のカテゴリを取得して表示する
$post_id = 1; // 取得する投稿のID
$categories = wp_get_post_terms( $post_id, 'category' );
foreach ( $categories as $category ) {
echo $category->name . ', ';
}
このサンプルコードでは、指定した投稿のカテゴリを取得し、それを表示しています。
- 投稿のタグを取得してリスト表示する
$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>';
}
このサンプルコードは、指定した投稿に紐づくタグをリスト形式で表示します。
- 複数のタクソノミーを取得する
$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>';
}
この例では、カテゴリとタグの両方を取得し、各タームの種別と名称を表示します。
- タクソノミーを用いて特定の投稿をフィルタリングする
$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’)に関連する投稿を取得し、そのタイトルを表示します。
- 投稿のカスタムタクソノミーを取得する
$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 . ', ';
}
}
このサンプルコードは、特定のカスタムタクソノミーに関連するタームを取得し、それを表示します。