通常Wordpressの関連記事は、カテゴリに関連付ける方法が一般的です。
プラグイン無しでカテゴリに関連付けられた関連記事の表示方法は以前書きました。
通常は、これでも十分だと思います。けれど、Wordpressユーザーの中には、カテゴリを設定しないでタグで管理しているという方も結構おられるようです。
そんな場合は、カテゴリで関連記事を表示するよりは、タグで表示したほうが関連性の高い記事が表示されます。
ということで、今回は「タグに関連付けられた関連記事を表示する方法」です。
photo by Felix Stember
目次
実装方法
その実装方法は、特にカテゴリのものと変わりありません。
まずは、詳しい方法が書かれているのでプラグインなしで関連記事を表示する方法を実装してください。
あとはその実装した方法のクエリー部分(データベースからデータを取得する部分)を変更するだけです。
related-entries.phpの編集
related-entries.php編集部分だけ説明します。
カテゴリに関連付ける場合
まず、カテゴリから関連記事を取得するクエリは以下のようになっています。
<?php //カテゴリ情報から関連記事を10個ランダムに呼び出す $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'=> 10, 'category__in' => $category_ID, 'orderby' => 'rand', ); $query = new WP_Query($args); ?> <?php if( $query -> have_posts() ): ?> <?php while (query -> have_posts()) : $query -> the_post(); ?> <!-- (略)関連記事の表示処理 --> <?php endwhile;?> <?php else:?> <p>記事はありませんでした</p> <?php endif; wp_reset_postdata(); ?> <br style="clear:both;">
タグに関連付ける場合
タグで関連記事を取得するには、上記の部分を以下のように変更します。
<?php //タグ情報から関連記事をランダムに呼び出す $tags = wp_get_post_tags($post->ID); $tag_ids = array(); foreach($tags as $tag): array_push( $tag_ids, $tag -> term_id); endforeach ; $args = array( 'post__not_in' => array($post -> ID), 'posts_per_page'=> 10, 'tag__in' => $tag_ids, 'orderby' => 'rand', ); $query = new WP_Query($args); ?> <?php if( $query -> have_posts() && !empty($tag_ids) ): ?> <?php while ($query -> have_posts()) : $query -> the_post(); ?> <!-- (略)関連記事の表示処理 --> <?php endwhile;?> <?php else:?> <p>記事はありませんでした</p> <?php endif; wp_reset_postdata(); ?> <br style="clear:both;">
ここで気をつけなければいけないことがあります。通常、投稿にカテゴリは必ず附属します(設定しなくても「未分類」になる)が、タグは設定されていない投稿もあり得るということです。
その、タグが一つも設定されていない投稿があることを考えて以下のようになっています。
<?php if( $query -> have_posts() || !empty($tag_ids) ): ?>
タグがない場合は、$tag_idsが空になるので、空の場合は「<p>記事はありませんでした</p>」を表示するようにします。(そうしないと、新着投稿を10個表示するクエリ結果が返されるので。)
気をつけなければいけないと言ってもこれだけです。
その他の設定
関連記事の表示部分や、スタイル、アイキャッチの設定などは以下の記事と全く同じでOKです。
まとめ
今回、自作のテーマに「タグに関連付けられた関連記事」機能も付けてみたので、その方法について書いてみました。
ただ、Wordpressユーザーの大半はカテゴリーを設定していると思うので、わざわざ関連記事をタグに紐付けする必要はないかと思います。
コード参考にさせていただいてます。
have_posts() || !empty($tag_ids) ): ?>
タグが一つもない時は ”||” じゃなくて ”&&” ですね。