【WordPress】プラグインなしで人気記事一覧を表示する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
サイト内の人気記事一覧を表示するプラグインに「Wordpress Popular Posts」というものがあります。こちらのプラグインをWordpressにインストールして設定をすれば人気の記事一覧を出力することが可能です。
ただ、プラグインをできるだけ使用したくない、使用できない……といったことがあるのもの事実です。そういった方に向けて、人気記事一覧をプラグインを使わずに表示する方法をご紹介したいと思います!
アクセス数をカウントする
今回以下のサイトを参考に本記事を書いています。
上記の記事では、post_views_countというカスタムフィールドを作成し、記事をへのアクセス数を保存して出力する方法が紹介されています。
具体的には以下の部分になります。こちらをテーマのfunctions.phpに追記します。
//カスタムフィールドの「post_views_count」にアクセス数を保存する
function setPostViews($post_id) {
$count_key = 'post_views_count';
$count = get_post_meta($post_id, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
}else{
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
//カスタムフィールドに保存されているアクセス数を取得する
function getPostViews($post_id){
$count_key = 'post_views_count';
$count = get_post_meta($post_id, $count_key, true);
if($count==''){
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
上記をfunctions.phpに追加して、アクセスをカウントしたいページに下記のスクリプトを追記します。今回は投稿詳細ページ(single.php)に追記します。
<?php
if(function_exists('setPostViews')){
setPostViews(get_the_ID());
}
?>
編集したファイルを反映し、投稿を閲覧すると、管理画面上から確認できるカスタムフィールド欄に下記項目追加されます。もしカスタムフィールドが表示されていない場合は、画面上部の「表示オプション」を選択して「カスタムフィールド」の項目にチェックを入れてみて下さい。

今後は「post_views_count」にアクセス数がカウントされていきます。こちらの「post_views_count」の値を利用して人気記事一覧を作成します。
人気記事一覧を表示する
single.phpに以下をコピペすると、人気記事一覧がアクセスの多い順に5件表示されるようになります。
<?php
if(function_exists('setPostViews')){
setPostViews(get_the_ID());
}
$args = array(
'post_type' => array('post'),
'posts_per_page' => 5,
'post_status' => array('publish'),
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'desc'
);
$query = new WP_Query($args);
if($query->have_posts()):
while($query->have_posts()):
$query->the_post();
?>
<div class="popularPost">
<a class="popularPostImage" href="<?php echo get_permalink(); ?>">
<?php if(has_post_thumbnail()){ the_post_thumbnail( 'post-thumbnail'); } ?>
</a>
<div class="popularPostBody">
<a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a>
</div>
<p><?php echo getPostViews(get_the_ID()); ?></p>
</div>
<?php
endwhile;
else:
echo '投稿がありません';
endif;
wp_reset_postdata();
?>
上記のサンプルでは人気記事のタイトルとサムネイル、該当記事のアクセス数を表示しています。
WP_Queryで「post_views_count」の値を取得し、アクセス数が多い順にソートするようになっています。「posts_per_page」で表示する件数を変更することができます。
テンプレートタグのWP_Queryに関しては以下をご参照いただければと思います!
以上、プラグインなしで人気記事一覧を表示するのご紹介でした。最後まで読んでいただきありがとうございました!