MENU

wp_get_post_tags()– Function –

wp_get_post_tags() は、指定した投稿のタグ情報を取得するためのテンプレートタグです。

目次

機能の説明

wp_get_post_tags()は、特定の投稿に紐づけられたタグを取得し、それを配列として返します。タグ情報は、WP_Termオブジェクト形式で取得され、各タグの名前・スラッグ・IDなどの詳細にアクセスできます。この関数は、投稿のタグをリスト表示したいときや、カスタムのリンクを作りたいときに便利です。

シンプルなコード例

$tags = wp_get_post_tags( get_the_ID() );
if ( !empty( $tags ) ) {
    foreach ( $tags as $tag ) {
        echo '<span>' . esc_html( $tag->name ) . '</span>';
    }
}

このコードでは、現在の投稿に付与されているタグを取得し、各タグの名前を表示しています。

使い方の解説

wp_get_post_tags()は、$post_idを渡すことでその投稿に付けられたすべてのタグを取得できます。さらに、取得するタグを条件で絞り込むために、オプションの引数も使用可能です。

引数

$post_id (int)

タグ情報を取得する対象の投稿ID。省略した場合、現在の投稿のIDが使用されます。

$args (array)

取得するタグを絞り込むためのオプション引数を配列で指定します。例えば、fieldsオプションで返り値を絞ることができます。get_terms()関数と同様の構造を取ります。

  • fields (string) : 結果を特定のフィールドだけに絞ります。例えば、'ids'にするとタグIDのみが返されます。

戻り値

array

取得したタグの情報をWP_Termオブジェクトの配列で返します。タグが付与されていない場合は空配列を返します。

wp_get_post_tags()自体には特別なオプションがありませんが、$args引数を使って取得するタグの条件を指定することが可能です。たとえば、タグの並び順やフィールドの指定が可能です。

オプション

fields (string)

指定したフィールドだけを返すオプションです。例えば、'ids'を指定すると、タグのIDのみが取得できます。

使用例

$tags = wp_get_post_tags( 123, array( 'orderby' => 'name', 'order' => 'ASC' ) );

if ( !empty( $tags ) ) {
    echo '<ul>';
    foreach ( $tags as $tag ) {
        echo '<li><a href="' . get_tag_link( $tag->term_id ) . '">' . esc_html( $tag->name ) . '</a></li>';
    }
    echo '</ul>';
} else {
    echo 'タグがありません。';
}

このコードでは、投稿IDが123の投稿に付与されたタグを取得し、アルファベット順で並べて表示しています。各タグ名はそのタグのアーカイブページへのリンクとして表示されます。

一緒に使うことが多い関連タグ

get_the_category()

get_the_category()は、特定の投稿に関連するカテゴリを取得します。カテゴリ情報を使って投稿を分類することが可能です。

$categories = get_the_category( get_the_ID() );

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

このコードでは、現在の投稿に付与されたカテゴリを取得し、それぞれのカテゴリ名をリスト形式で表示しています。

追加情報を取得したい場合

タグに関連する追加情報を取得したい場合、get_term_meta()を使ってタグに付随するカスタムメタデータを取得できます。

get_term_meta() で取得できるタグの情報

$tag_meta = get_term_meta( $tag_id, 'custom_meta_key', true );
echo 'タグのメタ情報: ' . esc_html( $tag_meta );

出力できる情報

  • name: タグの名前
  • slug: タグのスラッグ(URL フレンドリーな名前)
  • term_group: タームグループID
  • description: タグの説明文

get_term() でタグ情報を取得

$tag = get_term(5);  
echo 'タグ名: ' . $tag->name;  
echo 'スラッグ: ' . $tag->slug;

このコードでは、IDが5のタグの情報を取得し、名前とスラッグを表示しています。

出力できる情報

  • name: タグの名前
  • slug: タグのスラッグ(URLフレンドリーな名前)
  • term_id: タグのID
  • taxonomy: タグが属するタクソノミーの種類

想定されるトラブル

タグが取得できない場合

投稿にタグが付与されていない可能性があります。管理画面で該当投稿にタグを追加してください。

正しく並び替えができない場合

$args引数のorderbyorderを見直して、適切な条件を設定してください。

fieldsオプションが効かない

fieldsオプションが効かない

Q&A

投稿にタグが付与されていない場合、エラーになりますか?

タグがない場合は、空の配列が返されるため、エラーにはなりません。empty()関数を使ってチェックするのが推奨されます。

タグのIDだけを取得することは可能ですか?

はい、取得したタグ配列からterm_idを使ってIDを取得することができます。

$tag_ids = wp_get_post_tags(get_the_ID(), array('fields' => 'ids'));  

特定のスラッグを持つタグがあるか確認する方法はありますか?

wp_get_post_tags()で取得したタグの配列をループし、slugプロパティを確認することで可能です。

投稿のタグを複数形で表示する方法は?

implode()を使うことで、カンマ区切りの文字列としてタグを出力できます。

まとめ

wp_get_post_tags()は、投稿に紐付けられたタグ情報を取得するための便利なテンプレートタグです。

タグ情報を取得することで、タグの一覧表示やアーカイブページへのリンクを作成するなど、ユーザー体験を向上させることができます。

カスタマイズ例

1