WordPressに限らず、ブログには「関連記事」というものを表示してあることが多いのですが、その取得方法は色々あります。

WordPressの場合は「カテゴリ」「タグ」で取得する場合が多いのですが、当ブログはタグを使っています。

タグで関連記事を表示

それはなぜかというと、エントリーが少ないカテゴリーだと表示されるものが少なくなってしまう点が大きな理由ですが、「この記事とこの記事は共通点があるな。」ということがよくあったので、タグで表示することにしています。

タグで関連記事を表示する理由

English Limestone Cottage with Garden in full bloom
English Limestone Cottage with Garden in full bloom / F. D. Richards

例えば、「イギリス風」という言葉があったとします。

「イギリス風カフェに行きました!!」という記事と、「イギリス風の家具を買いました!!」という記事を書いた場合、同じカテゴリーに属する可能性は当ブログの場合です。

現時点ではそれぞれ「カフェログ」「ショッピング」に分類しますね。

読者の方がもし「イギリス風」にまつわるエントリーを探していたらどうせなら2つの記事を読んでもらいたい。そんな発想から当ブログではタグでの関連記事を表示しております。

タグで関連記事を表示させるコード

というわけで、コードはこちら。

<?php
    $original_post = $post;
    $tags = wp_get_post_tags($post->ID);    //投稿記事のタグを取得
    $tagIDs = array();
    if ($tags) {
        $tagcount = count($tags);
        for ($i = 0; $i < $tagcount; $i++) {
            $tagIDs[$i] = $tags[$i]->term_id;
        }
    $args=array(
    'tag__in' => $tagIDs,
    'post__not_in' => array($post->ID),
    'showposts'=>6,    //表示件数
    'ignore_sticky_posts'=>1 //取得した記事を何番目から表示するか
    );
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>

        ここにループ内のコードを記述

        <?php endwhile; wp_reset_query(); ?>
<?php } else { ?>
    関連する記事は見当たりません…
<?php } } ?>

コピペでOK。

お好みで表示件数だけ変更してください。

$tags = wp_get_post_tags($post->ID);

肝はこのコードでタグのIDを取得するところと、$argsに格納するコードですね。

まとめ

New WordPress Buttons and Stickers
Photo by Nikolay Bachiyski

WordPressには便利なプラグイン、yet another related posts pluginWordPress Related Postsを使う方法もあります。

プラグインは便利な半面、データベースを利用することで成り立っているのでデータベースを消費してしまうデメリットがあります。なので出来る限りはプラグインに頼らずに導入した方が僕は良いと思います。

もちろんプラグインにはプラグイン特有の機能があるので甲乙は付けられませんが、少なくともデザインから作っていく場合はプラグインは使わなくてもいいと思いますね。

タグは使わない人は多いとは思いますが、noindexにすれば僕は使っても問題無いと考えているので、タグで関連記事を表示させたい場合は是非参考にしてみてください。