WordPressのView数を取得できるプラグインWP-PostViewsを使用時に、カスタム投稿タイプでオリジナルデザインでランキングを作成時に少し調べたのでメモ書きに。
通常の投稿の場合
$postsview = get_posts(array(
'showposts' => 5, //表示する記事の件数
'meta_key' => 'views', //閲覧数を取得
'orderby' => 'meta_value_num', //取得した閲覧数の順番に並べる
));
foreach($postsview as $post):
// ここに中身
endforeach;
カスタム投稿タイプの場合
<ul class="lcl-side-ranking">
<?php
$postsview = get_posts(array(
'showposts' => 5,
'post_type' => 'news',
'post_status' => 'publish',
'orderby' => 'meta_value_num',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'views',
)
)
));
foreach($postsview as $post):
$thumbnail_id = get_post_thumbnail_id($post->ID);
$thumbnail = wp_get_attachment_image_src( $thumbnail_id , 'full' );
if(!empty($thumbnail)) $thumbnail = $thumbnail[0];
$permalink = get_permalink( $post->ID );
?>
<li class="recommend-item">
<a class="postblk-item" href="<?php echo $permalink; ?>">
<div class="postblk__img" <?php if(!empty($thumbnail)){ echo ' style="background-image: url('.$thumbnail.');"';}?>>
</div>
<div class="postblk-info">
<time class="postblk__date" datetime="<?php echo $post->post_date; ?>"><?php echo date('Y.m.d',strtotime($post->post_date)); ?></time>
<h2 class="postblk__ttl"><?php echo $post->post_title; ?></h2>
</div>
</a>
</li>
<?php endforeach; ?>
<?php wp_reset_query(); ?>
</ul>
いつもどおり、通常投稿用で記述していたら記事が取得できず、あれ?なんでってなっていろいろ調べました。
'showposts' => 5
ここは表示したい数を。
'post_type' => 'news',
ここは表示したいカスタム投稿タイプの名前を入力。
そのあとは基本そのままでいいと思います。PV数順に表示です。その他、カテゴリーやタグで絞り込む場合はまた都度追加していく感じですね。
'post_status' => 'publish',
'orderby' => 'meta_value_num',
'meta_query' => array(
'relation' => 'AND',
array( 'key' => 'views' )
)
ランキングプラグインはいくつかありますが、僕は設置も楽で取り回しやすいWP-PostViewsかGoogle Analyticsのデータを使用するSimple GA Rankingを使う場合が多いですね。Simple GA Rankingの場合、制作時にGAが入っていない場合と、内部PVをとっていなかったりしてめんどくさい場合が多いので、特に理由がない場合はWP-PostViewsをよく使います。