【WordPress】投稿記事を人気ランキング順に表示する方法
Webサイトのサイドバーなどで投稿記事の人気ランキングなどを表示したいときがあります。プラグインを使う方法もありますが、プラグインなしでも簡単に設置することができるのでご紹介致します。
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);
functions.phpに次のコードを記述します。
一つ目の関数「getPostViews」は、投稿記事のアクセス数をブラウザ上で表示するための関数になります。
二つ目の関数「setPostViews」は、投稿記事のアクセス数を記録するための関数となります。
ランキングを表示するファイルに次のコードを記述します。
<?php
setPostViews( get_the_ID() ); //記事のアクセス数を取得する関数
$args = new WP_Query(
array(
'post_type' => 'post', //投稿タイプ
'posts_per_page' => 5, //表示数
'meta_key' => 'post_views_count', //カスタムフィールド名
'orderby' => 'meta_value_num', //カスタムフィールドの値
'order' => 'DESC' //降順で表示する
)
);
if ( $args->have_posts() ):
?>
<ul>
<?php
while ( $args->have_posts() ) : $args->the_post();
?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
<?php echo get_the_post_thumbnail(); ?>
<!-- 記事のアクセス数を表示する関数 -->
<?php echo getPostViews( get_the_ID() ); ?>
</a></li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_postdata();?>
人気ランキングを表示するファイルに、上記コードを記述します。
サブループの前に「setPostViews( get_the_ID() );」を入れるのを忘れないようにお願いします。
以上でランキング表示の実装は完成となります。