ブログやオウンドメディアなどのサイトを作成すると、サイドバーなどに人気記事ランキングを表示することが多いですよね。
WordPress Popular Postを使用すると簡単に表示できるんですが、見た目をフルカスタムしたい場合、独自タグを使用しなければいけないのが面倒だなーーーーーと思っていました。
先日、記事閲覧数だけ表示したい、という依頼を受けたときに見つけたプラグイン、「WP-PostViews」。
記事の閲覧数がカウントできて、こちらもランキング表示などをショートコードで簡単にできるのですが、このプラグインと、他のプラグインの違いは、viewデータがどこに格納されるのかっていうことかなと思いました。
例えば、WordPress Popular Postでランキングの見た目をカスタムする場合は、「wpp_get_mostpopular」というアクションフックに、投稿タイプやらサムネイルのサイズやら、表示させたい全ての情報をパラメータとしてを渡して表示させます。
WordPress Popular Postのドキュメンテーション
これってとってもめんどくさくないですか、、??
めんどくさくない方はいいんですが笑、WordPressをカスタムしている方ならよく使用されているであろう「wp_Query」でループさせたくないですか、、?
それができるのが「WP-PostViews」だったんですね。
これはview数が、投稿のメタフィールドに格納されるのです。
カスタムフィールドの値と一緒ですね。
ということはwp_queryのパラメータで、meta_key、meta_value_numを使用すれば、view数順のloopを表示することができるのです!
具体的に書くと、下記のような感じです。
<?php $args = array( 'post_type' => 'post', //投稿タイプ 'posts_per_page' => 5, //表示件数 'meta_key' => 'views', //メタキーはviewsを指定 'orderby' => 'meta_value_num', 'order' => DESC //viewsの数字が大きい順 ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { echo '<ul class="ranking">'; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '<li>' . get_the_title() . '</li>'; } echo '</ul>'; wp_reset_postdata(); } else { // 投稿がない場合 } ?>
これであとは、li:first-child といったセレクタを使用してcssでランキングのナンバリングをすれば、記事ランキングの完成です。
一個懸念点は、こちらのプラグインの最終更新日が2年前ということ、、
WordPress5.0での挙動テストもされてないみたいなので、インストールは自己責任でお願いします!
そもそもプラグインを使用しなくても、カスタムフィールドにview数を格納する方法もあるみたいなので、これ以上このプラグインが放置されてるようだったらそっちも試してみようかと思います、、!