アクセスをカウントして人気ランキングを作る【WordPress】
自作ゲームを公開していたらどのゲームが人気か知りたいし、人気ゲームランキングをページに表示させたいですよね(‘ω’)ノ
ということで今回はそいつを作ります。
で、まず、今回参考にさせていただいた記事がこちらです。
https://manablog.org/wordpress-popular-posts-without-plugin/
ただ、読んでもすぐわからなかったのでちょっと補足して説明したいと思います(‘ω’)ノ
関数本体はfunctions.phpに書いてくださいね。
訪れた回数をカウントする
まずページの訪問数をカウントしてくれるのがこの関数です。
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); } }
なのでこのsetPostViews()を以下のように
<?php if(have_posts()): the_post(); setPostViews(get_the_ID());
シングルページのthe_post()の後くらいに書いておくとカウントしてくれるようです。
カウント数を表示する
カウント数を表示するのは以下の関数になってます。
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'; }
記事内の表示したいところで
<?php echo getPostViews(get_the_ID()); ?>
と書くと表示してくれます。
あ、参考にしたプログラムの最後に書いてあったこの部分なんですが
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
これはなんか過剰にビュー数をカウントするのを防ぐとかそんな感じらしいです(大元の記事が英語だったのでいまいちわからん(^^;))
ランキングを作って表示する
カウント数を表示してくれるだけじゃ意味がないのでランキングで表示できるようにします。
function viewRanking($post_type, $num){ global $post; $args = array( 'post_type' => $post_type, 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'posts_per_page' => $num, 'order' => 'DESC', ); $posts = get_posts($args); if ( !empty($posts) ): ?> <ol> <?php foreach ( $posts as $post ): setup_postdata($post); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title_attribute(); ?></a> </li> <?php endforeach; ?> </ol> <?php wp_reset_postdata(); endif; }
これでゲーム投稿ページの人気ランキングが表示されます。
viewRanking(“投稿タイプ”, “表示したい数”)という具合に表示したい投稿タイプと数を引数に入れて関数を呼ぶとアクセスの多い順にタイトルがリストで表示されます。
例によってCSSデザインは自分でやってくださいな(‘ω’)ノ
同カテゴリー記事
記事の感想・コメント
※コメントはまだありません※