こんにちは、ryohei(@ityryohei)です!
サイト内の人気記事一覧を表示するプラグインに「Wordpress Popular Posts」というものがあります。こちらのプラグインをWordpressにインストールして設定をすれば人気の記事一覧を出力することが可能です。
ただ、プラグインをできるだけ使用したくない、使用できない……といったことがあるのもの事実です。そういった方に向けて、人気記事一覧をプラグインを使わずに表示する方法をご紹介したいと思います!
アクセス数をカウントする
今回以下のサイトを参考に本記事を書いています。
WordPress: Display Most Popular (Viewed) Posts without a plugin
上記の記事では、「post_views_count」というカスタムフィールドを作成し、記事をへのアクセス数を保存して出力する方法が説明してあります。
具体的には以下の部分になります。こちらをテーマのfunctions.phpに追記します。
//カスタムフィールドの「post_views_count」にアクセス数を保存する function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } } //カスタムフィールドに保存されているアクセス数を取得する function getPostViews($postID){ $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 View"; } return $count.' Views'; }
functions.phpを保存して以下を追加します。今回はsingle.phpに追加します。
<?php if( function_exists( 'setPostViews' ) ) { setPostViews(get_the_ID()); } ?>
上記を追加し、任意の記事を閲覧して管理画面で投稿の編集を見てみると以下のカスタムフィールドが追加されているかと思います。(もし表示されていない場合は、編集画面上部の「表示オプション」を選択して「カスタムフィールド」の項目にチェックを入れてみて下さい。)
今後は「post_views_count」にアクセス数がカウントされていきます。こちらの「post_views_count」の値を利用して人気記事一覧を作成します。
人気記事一覧を表示する
single.phpに以下をコピペすると、人気記事一覧がアクセスの多い順に5件表示されるようになります。
<?php if( function_exists( 'setPostViews' ) ) { setPostViews(get_the_ID()); } query_posts('meta_key=post_views_count&orderby=meta_value_num&order=DESC&posts_per_page=5'); while(have_posts()) : the_post(); ?> <div class="popularPost"> <a class="popularPostImage" href="<?php echo get_permalink(); ?>"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'post-thumbnail'); } ?> </a> <div class="popularPostBody"> <a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a> </div> <p><?php echo getPostViews(get_the_ID()); ?></p> </div> <?php endwhile; //クエリリセット wp_reset_query(); ?>
上記のサンプルでは人気記事のタイトルとサムネイル、該当記事のアクセス数を表示しています。
query_postsで「post_views_count」の値を取得し、アクセス数が多い順にソートするようになっています。「posts_per_page」で表示する件数を変更することができます。
テンプレートタグのquery_postsに関しては以下をご参照いただければと思います!
以上、プラグインなしで人気記事一覧を表示するのご紹介でした。最後まで読んでいただきありがとうございました!