追加しようしようと思って忘れてた関連エントリーの表示機能をブログに追加した。
最初はプラグイン使おうかなーって思ったが自分で書いたほうが細かい操作できるしということでPHP書いて作りました。
何をもって関連するエントリーとするかだが、今回はタグが同じだったら関連扱いにする。大体あってるはず。
コードは以下の通り。
get_the_tags() で表示しているエントリーに設定されているタグを取得し、get_posts でタグをキーにして検索をかける。get_posts で扱える引数は query_posts と大体同じらしい。
<div class="related-entry">
<?php
$tags_id_list = array();
$get_the_tags = get_the_tags();
if ($get_the_tags):
foreach ($get_the_tags as $id => $tag) {
$tags_id_list[] = $tag->term_id;
}
$line_limit = 10;
$entry_list = get_posts(array('tag__in' => $tags_id_list, 'posts_per_page' => $line_limit+1));
$line_no = 0;
$the_id = get_the_ID();
if ($entry_list) :
echo '<h3>関連記事</h3>';
echo '<ul>';
foreach ($entry_list as $entry) :
if ($the_id == $entry->ID) { continue; }
if ($entry->post_password != "") { continue; }
$line_no += 1;
$class_name = ($line_no % 2) ? 'odd' : 'even';
$permalink = '/wp/archive/' . preg_replace('/[\-:\s]/', '', $entry->post_date);
echo '<li><a href="' . $permalink . '">' . $entry->post_title . '</a></li>';
endforeach;
echo '</ul>';
endif;
endif;
?>
</div>