記事のPVを取得・表示
PVをカスタムフィールドに保存する関数をfunctions.phpに記載
function set_post_views($post_id){
// 投稿記事のID($post_id)から カスタムフィールドのデータ("post_views_count")を取得する
$count = get_post_meta($post_id, "post_views_count", true);
// "post_views_count"が空であれば、カスタムフィールドの情報を削除してから 0という値を入れる
if( $count == '' ) {
$count = 0;
delete_post_meta($post_id, "post_views_count");
add_post_meta($post_id, "post_views_count", '0');
} else {
$count++;
update_post_meta($post_id, "post_views_count", $count);
}
}
single.phpで関数を呼び出す
<?php set_post_views(get_the_ID()); ?>
single.phpでPVを表示
function get_post_views($post_id){
// 投稿記事のID($post_id)から カスタムフィールドのデータ("post_views_count")を取得する
$count = get_post_meta($post_id, 'post_views_count', true);
// "post_views_count"が空であれば、カスタムフィールドの情報を削除してから 0という値を入れる
if($count == ''){
delete_post_meta($post_id, 'post_views_count');
add_post_meta($post_id, 'post_views_count', '0');
return '0';
}
return $count;
}
$pv = get_post_views(get_the_ID());
echo '現在のPV数:' . $pv;
補足:人気記事ランキング(全期間)
特定の期間のランキングを作りたい場合はGoogleAnalyticsAPIを使うこと
<main>
<h1 style='font-size:20px; margin:20px; text-align:center;'>ランキング(仮)</h1>
<?php
function get_post_views($post_id) {
$count = get_post_meta($post_id, 'post_views_count', true);
if( $count == '' ) {
delete_post_meta($post_id, 'post_views_count');
add_post_meta($post_id, 'post_views_count', '0');
return '0';
}
return $count;
}
?>
<?php $i = 1; ?>
<?php
$arg = array(
'post_type' => 'post',
'posts_per_page' => 20,
'order' => 'DESC',
'orderby' => 'meta_value_num',
'meta_key' => 'post_views_count'
);
$wp_query = new WP_Query($arg);
if( $wp_query->have_posts() ):
while( $wp_query->have_posts() ):
$wp_query->the_post();
?>
<article style='align-items:center; display:flex; margin:10px;'>
<div style='font-weight:700; width:10%;'><?php echo $i; ?>位</div>
<a style='display:block; width:45%;' href="<?php the_permalink() ?>"><?php if (has_post_thumbnail()) { the_post_thumbnail(); } ?></a>
<div style='width:45%;'>
<h2 style='margin:5px 10px; overflow:hidden;'><?php the_title(); ?></h2>
<time style='display:block; margin:0 10px;' datetime="<?php the_modified_date( 'Y-m-d' ); ?>"><?php the_modified_date( 'Y年m月d日' ); ?></time>
<span style='margin-left:10px;'><?php echo get_post_views(get_the_ID()); ?> 回視聴</span>
</div>
</article>
<?php
$i++;
endwhile;
endif;
wp_reset_postdata();
?>
</main>