特定の投稿のタグと同じタグを含む別の投稿を取得するコードをご紹介します。この仕組みを利用して同一タグを含む投稿リストを関連記事として表示することなどが可能でございます。

特定の投稿のタグと同じタグを含む別の投稿を取得するPHPコード

早速コードを見ていきましょう。下記のようなコードをテーマや作成されているプラグインに追加することで、同一タグを含む投稿オブジェクトの配列を取得することが可能です。

$post_id = 1;
$terms = wp_get_post_tags($post_id); 
$term_array = [];
foreach( $terms as $term ) { 
    $term_array[] = $term->slug;
}
$args = array(
'tag'    => implode(",", $term_array),
'orderby'    => 'date',
'order'    => 'DESC',
'post__not_in'    => array($post_id),
'posts_per_page'    => '30',
);
$related_posts = get_posts( $args );

$post_id = 1; の行で基準となる投稿のidを指定します。

wp_get_post_tags で上記投稿のタグリストを取得できます。こちらを配列に入れて、後程同じタグを含む投稿を取得するのに使います。

get_posts はワードプレスのループ外で投稿リストを取得できる関数です。こちらの関数に様々な条件を指定した配列を渡すことで、その条件に合致した投稿オブジェクトリストが取得できます。

get_postsに渡す条件

‘tag’ => implode(“,”, $term_array), タグを含む投稿を取得します。

‘orderby’ => ‘date’,’order’ => ‘DESC’, 最新の投稿順に取得します。

‘post__not_in’ => array($post_id),指定した投稿は除外します。

‘posts_per_page’ => ’30’, 最大30件取得します。

WordPress ワードプレスのテーマやプラグインのカスタマイズ・機能追加のご相談ご依頼はワードプレスドクターまでお気軽にお送りください