人気記事のコメント数、はてなブックマーク数を表示する
表示回数以外にもコメント数やはてなブックマーク数を表示できるのでそれぞれについて以下にメモします。
コメント数を表示する
コメント数を表示するには、1ページに記載したショートコードの中の下記
<span class="label label-danger"><?php echo the_views(); ?></span>
を以下に置き換えればOKです。もちろん両方書けば表示回数とコメント数の両方を表示可能です。
<span class="label label-danger"><?php echo get_comments_number( get_the_ID() ); ?> comments</span>
get_comments_number
で各記事のコメント数を取得しています。
ちなみに、コメント数の多い順に表示したい場合は、WP_Query
の部分でorderby
にcomment_count
を指定することにより可能です。以下のようにすればOKです。
$query = new WP_Query(array(
'orderby' => 'comment_count',
'order' => 'DESC',
'posts_per_page' => 10
));
上記によりコメント数が多い上位10件の記事を取得することができます。
はてなブックマーク数を表示
ショートコードを以下のようにします。1ページ目でのせたショートコードとほぼおなじなのでコメントは省略しています。
function wpb_most_viewed_posts() {
ob_start();
?>
<ul class="ppst">
<?php
$query = new WP_Query(array(
'meta_key' => 'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 5
));
while ($query->have_posts()) : $query->the_post();
$hatena = file_get_contents("http://api.b.st-hatena.com/entry.count?url=" . rawurlencode( get_permalink( get_the_ID() ) )) ?: 0;
?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></br>
<span class="ppst-date"><?php the_date(); ?></span>
<span class="label label-danger"><?php echo $hatena; ?> users</span>
</li>
<?php
endwhile;
?>
</ul>
<?php
$output = ob_get_clean();
return $output;
}
add_shortcode('wpb_most_viewed', 'wpb_most_viewed_posts');
add_filter('widget_text', 'do_shortcode');
上記の$hatena
という変数に各記事のはてなブックマーク数を格納しています。file_get_contents
ではてなブックマーク数を取得するAPIを使っています。
はてなブックマークAPIについては以下の記事が大変参考になると思います。
はてなブックマークのAPIで指定したURLのはてブ数を取得してPHPで出力する | Ad A Type Inc.
urlencode
また、はてなブックマーク数が0の場合は$hatena
に0を格納しています。エルビス演算子という書き方のようです。下記が参考になります。なお、エルビス演算子はPHP5.3以降でないと使用できないので、使う場合はまず使用しているレンタルサーバの管理画面などでPHPのバージョンを確認したほうがいいです
なお、残念ながら自作のショートコードではてなブックマーク数が多い順番に記事を表示する方法は知らないのでどなたか良い方法があれば教えて頂ければと思います。
今月の人気記事、今週の人気記事を表示する
まず、投稿日が今月である記事のうち表示回数上位5件を表示したい場合は以下のようにします。1ページ目のショートコード内WP_Query
の条件にdate_query
という条件を新しく追加するだけです。
// 投稿日が今月である記事のうち表示回数上位5件を取得
$query = new WP_Query(array(
'meta_key' => 'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'date_query' => array(
array(
'year' => date( 'Y' ),
'month' => date( 'M' ),
),
),
'posts_per_page' => 5
));
もし投稿日が今週である記事という条件にしたい場合は、上記の'month' => date( 'M' )
を'week' => date( 'W' )
にすればOKです。なぜこうなるかについては、以下のサイトに詳しく書いてあるので参考になると思います。
まとめ
ここでメモしたショートコードを使えば、人気記事だけでなく、色々な条件での記事取得と表示ができます。他の便利な方法があればまたメモしたいと思います。
SPONSORED LINK
最後の今月の人気記事を表示させる場合、
‘month’ => date( ‘M’ )
ではなく
‘month’ => date( ‘m’ )
ではないでしょうか。