東京のホームページ制作・運用・コンサルティング会社

Blog

【WordPress】表示中の記事と同じタクソノミーの記事を表示するときに調査したこと

関連記事を表示する業務があったのですが、WordPressで欲しい情報が取得できず、少し手間取っしまいました。
そこで今回は、躓いたポイントとその際に参考にしたサイトを備忘録としてまとめました。

カスタム投稿タイプで作成した記事の詳細ページ下部に、表示中の記事と同じタクソノミーに所属している記事を3件表示するというのが今回やりたいことです。

調べてみるとやり方が紹介されている記事が沢山出てきます。

【WordPress】カスタム投稿のシングルページに関連記事を表示する

デフォルトの記事ではなく、カスタム投稿タイプの記事だったこともありスラッグには何をいれればいいのか。タームとタクソノミーってなんだっけと頭の中がごちゃごちゃしてしまったので、そちら一つ一つ解決していきました。

そもそもカスタム投稿タイプって何?

WordPressにデフォルトで用意されている投稿機能をカスタム(追加)したものです。
WordPressには他にもデフォルトで「固定ページ」という機能が用意されています。それぞれの特徴を表すと

投稿 固定ページ
特徴
  • カテゴリー・タグを用いて記事の関連付けができる
  • 記事の一覧ページが作成できる
  • 固定ページ同士の親子関係を作れる
  • ページごとにデザインテンプレートを作成・選ぶことができる

参考:【カスタム投稿タイプとは】WordPressカスタム投稿の作り方

カスタム投稿タイプを使用することで、デフォルトの投稿機能では日々のNEWSを発信して、カスタム投稿タイプでコラム記事を発信していくというようなことができます。

表示中の記事と同じタクソノミーに属している記事を3記事取得する

今回参考にしたのが下記の記事です。

【WordPress】カスタム投稿のシングルページに関連記事を表示する

        
            <?php
 global $post;
 $term = array_shift(get_the_terms($post->ID, 'genres')); //←ここが追加
 $args = array(
  'numberposts' => 8, //8件表示(デフォルトは5件)
  'post_type' => 'products', //カスタム投稿タイプ名
  'taxonomy' => 'genres', //タクソノミー名
  'term' => $term->slug, //ターム名 ←ここが追加
  'orderby' => 'rand', //ランダム表示
  'post__not_in' => array($post->ID) //表示中の記事を除外
 );
?>
<?php $myPosts = get_posts($args); if($myPosts) : ?>
<?php foreach($myPosts as $post) : setup_postdata($post); ?>
 <p><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?><?php the_title(); ?></a></p>
<?php endforeach; ?>
<?php else : ?>
 <p>関連アイテムはまだありません。</p>
<?php endif; wp_reset_postdata(); ?>
        
    

上記のコードを自分好みに修正しました。

  • nuberpostsを3
  • post_typeをカスタム投稿タイプの名前に
  • taxonomyを修正
  • orderbyをdate(日付)に
  • ‘order’=> ‘DESC’,(降順に並べる)を追加

まとめ

今回関連記事を取得するために試行錯誤しながら実装しました。
以前勉強して、取得の仕方は分かっているつもりだったのですが、いざやってみると忘れている部分があって実装に手こずってしまいました。

今回のコードの書き方をメモに残して、似たような実装の時に時間短縮できるといいと思います。

Soichiro
ホームページで成果を
出すためのアイデアを
紹介しています。
Soichiroについて
購読