アクセスをカウントして人気ランキングを作る【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デザインは自分でやってくださいな(‘ω’)ノ

どのゲームで遊ぶ?

同色のブロックを4つ以上つなげると消える落ちもの系パズルゲームです。連鎖で高得点を狙おう!
ひったくり犯を追いかけるランゲー。道に落ちている障害物には気を付けて。
スマホ専用対戦ピンポンゲーム。タッチだけのイライラ操作が逆に楽しい?
あほげー。なんか見つけたらタッチしてみて。なにかあるかも?

コメント欄

※コメントはまだありません※

コメントを残す

メールアドレスが公開されることはありません。

ゲームタグ一覧

ゲーム開発の参考書(amazon)

HTML5 ゲーム開発の教科書 スマホゲーム制作のための基礎講座
ゲームを作りながら楽しく学べるHTML5+CSS+JavaScriptプログラミング[改訂版] (Future Coders(NextPublishing))
改訂2版 はじめて学ぶ enchant.jsゲーム開発