WordPress

WordPress でプラグインを使わずに関連記事を表示する方法

WordPress でプラグインを使わずに関連記事を表示する方法を紹介します。
例えば、記事の終わりに関連記事を表示したい時に便利な方法です。

  1. キーワードを指定して関連記事を表示する方法
  2. 表示中の投稿と同じタームに分類されている関連記事を表示する方法

キーワードを指定して関連記事を表示する方法

タイトルや本文に、指定するキーワードが含まれている記事を集めて表示する方法を紹介します。
例えば、カスタム投稿タイプ products の記事の中でキーワード「キーワード」が含まれる記事を、
ランダムに最大5件表示する場合は、次のコードをテンプレートに追加します。

<?php
$args = array(
'post_type' => 'products', // 投稿タイプのスラッグを指定
'post_status' => 'publish', // 公開済の投稿を指定
'posts_per_page' => 5, // 投稿件数の指定
'post__not_in' => array($post->ID), // 現在表示している投稿を除外
'orderby' => 'rand', // ランダム
's' => 'キーワード' // キーワードを指定
);
$the_query = new WP_Query($args); if($the_query->have_posts()):
?>
<ul>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<!-- 投稿が無い場合の処理 -->
<?php endif; ?>

キーワードを指定してソートする場合は、パラメーター s にキーワードを指定します。
現在表示しているページを除外する場合は、パラメーター post__not_in$post->ID (今表示している記事ID)を指定します。
キーワードを複数指定する場合は、カンマ(,)やスペースでキーワードを指定します。

's' => 'キーワード1 キーワード2' // キーワードを指定

キーワードの完全一致を指定する場合は 'exact' => true, を指定します。デフォルト値はfalse。

'exact' => true

表示中の投稿と同じタームに分類されている関連記事を表示する方法

表示中の投稿と同じタームに分類された投稿を表示する場合は get_the_terms を使用します。
この方法はタームを複数選択している場合には対応していません。
タームを複数選択している場合は WordPress 表示されている投稿と同じタームに分類された投稿を表示する方法 をご覧ください。

例えば、カスタム投稿タイプ products でタクソノミー products-cat の場合に、
同じタームにチェックを入れている記事をランダムで9件表示する場合は、次のコードを追加します。

<?php
$terms = get_the_terms($post->ID,'products-cat');
foreach( $terms as $term ) {
$term_slug = $term->slug; // 現在表示している投稿に属しているタームを取得
}
$args = array(
'post_type' => 'products', // 投稿タイプのスラッグを指定
'post__not_in' => array($post->ID), // 現在表示している投稿を除外
'posts_per_page' => 9, // 表示件数9件
'orderby' => 'rand', // ランダム
'tax_query' => array( // タクソノミーの指定
array(
'taxonomy' => 'products-cat',
'field' => 'slug',
'terms' => $term_slug, // 取得したタームを指定
))
); $the_query = new WP_Query($args); if($the_query->have_posts()):
?>
<ul>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<!-- 投稿が無い場合の処理 -->
<?php endif; ?>

投稿並び替え系プラグインを使用していると表示がランダムにならない場合があります、ご注意を。

まとめ

WordPress でプラグインを使わずに関連記事を表示する方法、
・キーワードを指定して関連記事を表示する方法
・表示中の投稿と同じタームに分類されている関連記事を表示する方法
を紹介しました。

この記事をシェアする

合わせて読みたい関連記事