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

同カテゴリー記事

当サイトのオリジナルゲーム(ランダム表示)

ひったくり犯を追いかけるランゲー。道に落ちている障害物には気を付けて。
宇宙船を操作して遭難しているエイリアン達を助けに行きます。全部で15ステージ。
同じ色で複数くっついているタイルをタッチすると消すことができます。一度にたくさん消すと...
一番最初に作ったシューティングゲームです。まぁ最初はこんなもんですよ。

記事の感想・コメント

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

コメントを残す

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

ゲームジャンルタグ

新着技術ブログ記事

新着開発日記