閲覧数の表示順序
閲覧数: 35(0)
このサイトでは、閲覧数を表示するプラグインである「POST VIEWS COUNTER」を少し改修(詳細は過去記事を参照)して使っている。記事や記事一覧では、総閲覧数(今週の閲覧数)形式で表示している。ウィジェットでは「今週のトップ5」をランキング形式で表示するようになっている。その際の表示順序は、当然ながらその週の閲覧数順である。週単位で見た場合、閲覧数が同数となる場合が結構あり、その際は投稿ID順となっていた。ずっと時系列に投稿を続けている場合には問題にならないのだが、過去記事を後になって投稿する場合、投稿ID順になっていると投稿日は古いのに閲覧数が同数の場合、先に表示される。出来れば投稿日順に表示して欲しいところである。些細なことなのだが、気になると解消したくなるのは貧乏性かもしれない。
function pvc_get_most_viewed_posts( $args = [] ) {
$args = array_merge(
...
// force to use post views as order
$args['orderby'] = 'post_views';
return apply_filters( 'pvc_get_most_viewed_posts', get_posts( $args ), $args );
}
オリジナルのコードを確認すると「[‘orderby’] = ‘post_views’」と指定されている。この書き方だと、閲覧数が同数の場合には、既定値である投稿ID(post_id)順での表示になるようだ。ここを複数指定かつ投稿日とすれば問題は解決しそうである。複数指定のやり方を調べてみると、配列にすれば実現可能であることが分かった。早速下のように修正してみる。
function pvc_get_most_viewed_posts( $args = [] ) {
$args = array_merge(
...
// force to use post views as order
//$args['orderby'] = 'post_views';
$args['orderby'] = array( 'post_views'=>'DESC', 'post_date'=>'DESC');
return apply_filters( 'pvc_get_most_viewed_posts', get_posts( $args ), $args );
}
このように、明示的に「閲覧数、投稿日の降順」に表示するように指定すれば、同数の場合でも投稿日順に表示するように修正できた。小さなことでも気になると解消したくなるのは性分として仕方ないのだが、個人的には誰にも理解されなくても満足感は高い(笑)