WordPressで人気記事ランキングを表示させる場合、「WordPress Popular Posts」というプラグインが有名ですが、今回はプラグインなしで人気記事の一覧を実装する方法を紹介します。
functions.phpで関数を作る
まず、「functions.php」を編集して、人気記事を出力するための関数を次のように記述します。
function getPostViews($postID) {
$count_key = ‘post_views_count’;
$count = get_post_meta($postID, $count_key, true);
if($count==”) {
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, ‘0’);
return “0 View”;
}
return $count.’ Views’;
}
function setPostViews($postID) {
$count_key = ‘post_views_count’;
$count = get_post_meta($postID, $count_key, true);
if($count==”) {
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, ‘0’);
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
}
remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
関数を使って人気記事一覧を出力する
先ほど作った関数を使って、人気記事一覧を出力します。
setPostViews(get_the_ID());
$args = array(
’meta_key’ => ‘post_views_count’,
’orderby’ => ‘meta_value_num’,
’order’ => ‘DESC’,
’posts_per_page’ => 3
);
$query = new WP_Query($args);
if($query->have_posts()):
while($query->have_posts()):
$query->the_post();
?>
<article>
<a href=”<?php the_permalink(); ?>”>
<?php if(has_post_thumbnail()): ?>
<?php the_post_thumbnail(‘full’); ?>
<?php else: ?>
No image
<?php endif; ?>
<p><?php the_title(); ?></p>
</a>
</article>
<?php
endwhile;
endif;
wp_reset_postdata();
?>
プラグインなしで実装するのもあり
このように人気記事一覧の表示もプラグインなしで実装することができます。
アクセス数を集計する期間を設定したりとか、もっと細かいことをしようと思うとプラグインを使った方が楽かもしれません。
「WordPress Popular Posts」に限らずWordPressは便利なプラグインが多いですが、その分サイトが重たくなったりもするので、プラグインがなくても実装できるなら、プラグインに頼らず自作するのもいいと思います。
Leave a Comment