芝生やDIY等のライフハックやWeb制作情報を発信するメディア

【WordPress】プラグインなしで投稿記事に関連リンクを表示する方法

WordPress2016年9月8日

よくブログ記事の終わりにある「関連リンク」や「あわせて読みたい」ですが、WordPressで様々な方法で実装することが可能です。
Web屋の芝生DIYでも取り入れようと思いいくつかの方法を検討した結果、プラグインなしで実装することにしました。

プラグインを使えば簡単っちゃ簡単なんですが、このサイトはオリジナルのテーマで実装していますし、マークアップが自由にいじれないこともあって逆にプラグインだと取り入れづらかったんですよね。

同カテゴリの記事へのリンクをランダム表示するという簡易なものではありますが、今回実装した方法をご紹介いたします。最低限のSEO対策(内部リンク対策)にもなりますのでご参考になれば幸いです。

関連リンク用インクルードphpを作成

single.phpに直接記述せず、別ファイルでインクルード化しました。
ファイル名は何でもよいのですが、今回は「releted-link.php」という命名で以下のソースコードを記述します。

<?php $categories = get_the_category($post->ID);$category_ID = array();foreach($categories as $category):array_push( $category_ID, $category -> cat_ID);endforeach ;
$args = array('post__not_in' => array($post -> ID),'posts_per_page'=> 3,'category__in' => $category_ID,'orderby' => 'rand',);
$query = new WP_Query($args); ?>
<h2 class="hdg-l2-01">以下の記事もあわせてお読みください</h2>
<ul class="list-link-01">
<?php if( $query -> have_posts() ): ?>
<?php while ($query -> have_posts()) : $query -> the_post(); ?>
<li><p class="date"><span class="cat"><?php $category = get_the_category();echo $category[0]->cat_name;?></span><?php the_time('Y年n月j日'); ?></p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile;?>
<?php else:?>
<?php endif;wp_reset_postdata();?>
</ul>
  • 詳細なマークアップはテーマごとに適宜変更する必要がありますのでご注意ください
  • 「'posts_per_page'=> ○,」の「○」の箇所の数字で表示件数をコントロールできます

single.phpにreleted-link.phpを呼び出す記述を追加

以下のように、single.phpから作成したreleted-link.phpを呼び出すコードを関連リンクを表示したい場所に記述します。

<?php include( TEMPLATEPATH . '/related-link.php' ); ?>

スタイルを調整

サイトの設計やテーマに応じて、適宜スタイルを設定してください。

まとめ

ブログ記事の関連リンクは、本来記事ごとに関連記事を選択し表示するのがベストです。今回はとりあえず簡易に実装したかったのと、私の性格上普段の記事更新で関連リンクのことまで考えるのが面倒だったこともあり、今回はランダム表示という選択をしました。プラグインに頼らず上記のような手段で実装するのはパフォーマンス面ではメリットもあり、「とりあえず」の関連リンク対応としては個人的には全然アリだと思います。

「WordPress」の他の記事を読む

ページの先頭に戻る