★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる

WordPressでPHPから投稿PV数を取得してみた

WordPressでPHPから投稿PV数を取得してみた - 具体的なコード例と一緒に2つ紹介

投稿PV数はプラグインを使えば表示できます。

ただ次のように取得したかったんです。

WordPressでPHPから投稿PV数を調べる方法

その方法が分かったので、記録しておきます。

方法1.WordPress Popular PostsのAPIを使う

1つめは次のプラグインAPIを活用すること

WordPress Popular Posts

このブログでも次の記事で紹介しましたね。

WordPress Popular Postsで人気記事を表示する手順を徹底解説!
WordPressで人気記事を表示するならPopular Postsプラグインが一番おすすめです。このプラグインの導入・使い方についてここでは詳しく丁寧に紹介していきます。

人気記事を表示できる便利プラグインです。

その中に次のような関数があります。

公式ページより抜粋

wpp_get_views()

The wpp_get_views() template tag returns the views count of a single post/page/custom-post-type. It accepts three parameters:

Post/Page/CPT ID (integer, required).
Time range (string, optional). If time range isn't provided, wpp_get_views() will retrieve the total amount of views. Otherwise, it'll return the number of views received within the specified time range. Available options: all, last24hours, last7days, last30days.
Number format (boolean, optional). If number format is set to true (default), wpp_get_views() will format the views count with grouped thousands (eg. 1,233). Otherwise, wpp_get_views() will return the views count unformatted (eg. 1233).

引用元https://github.com/cabrerahector/wordpress-popular-posts/wiki/2.-Template-tags

公式説明の意訳

wpp_get_views()

テンプレートタグ wpp_get_views() は個別投稿・固定ページ・カスタム投稿タイプのページビュー数を返してくれます。次の3つの引数が受け取れます。

第1引数 : 投稿ID(必須)

第2引数 : 取得対象の期間(任意)指定されない場合は全期間のPV数を返します。指定されたならその期間のPV数が取得可能。オプション値 : all, last24hours, last7days, last30days.

第3引数 : 数字フォーマット(任意) もしtrueに設定(デフォルト)されたなら、wpp_get_views() は3桁ごとにコンマで区切った形でPV数(例 : 1,234)を返します。もし false だったら何も加工しないで返します。(例 : 1234)

これを使えばこんな風にPV数取得が可能。

↓ 現在投稿のPV数を取得する

/// 全期間の現在投稿のPV数取得
if (function_exists('wpp_get_views')) {
  $pv = wpp_get_views(get_the_ID());
}

↓ 過去24時間のPV数取得

if (function_exists('wpp_get_views')) {
  $pv = wpp_get_views(
    get_the_ID(), 'last24hours'
  );
}

上コードの get_the_ID() が現在開いている投稿のIDを表します。あとはPV数をそのまま表示したり、PV数に応じてコンテンツを切り替えたりとか好きにしてください。

もちろん WordPress Popular Posts を使わない方法もあります。でも難易度とか管理が難しいので、プラグインの力を借りるのが一番ですね、結局

方法2.プラグインなしでPHPだけでPV取得

2つめはプラグインなしの方法

投稿メタ情報にPV数を追加します。

コード手順を載せると次の手順です。

1.投稿PV数を記録する関数作成

このようなコード内容

function set_post_views($post_id) {
    $count_key = 'post_views_count';
    $count = get_post_meta($post_id, $count_key, true);
    if ($count == '') {
        $count = 0;
        delete_post_meta($post_id, $count_key);
        add_post_meta($post_id, $count_key, '0');
    } else {
        update_post_meta($post_id, $count_key, ++$count);
    }
}

この関数には投稿IDを渡せます。その投稿IDが 'post_views_count' というキーを持っていれば、その値を+1、なければ新規で追加するといった感じです。

2.投稿PV数を取得する関数作成

このようなコード内容

function get_post_views($post_id){
    $count_key = 'post_views_count';
    $count = get_post_meta($post_id, $count_key, true);
    if ($count == '') {
        delete_post_meta($post_id, $count_key);
        add_post_meta($post_id, $count_key, '0');
        return '0';
    }
    return $count;
}

先ほど set_post_views() で記録したPV数を取得して返すだけの関数。もしPV数のメタ情報が存在しないなら 0 を返す仕様にしました。

3.テーマのsingle.phpに1行追加

どのテーマにも single.php があるはずです。

そこで先ほど作成した関数を呼び出します。

/// PV数をカウントする
set_post_views(get_the_ID());

先ほど書いたように「single.phpって何?」というレベルの人は絶対に試さないでください。ある程度WordPressの仕組みが分かる人向けです。

そして上コード、残念ながら同一IPアドレスでもPVが重複カウントされます。厳密なPV数ではないという点には注意してください。

4.PV数を取得&表示する

最後に好きな場所でPV数を取得するだけ

$post_pv = get_post_views(get_the_ID());
echo '現在PV数 : ' . $post_pv;

正直言ってあんまりいい方法ではないかも・・・

先ほど紹介したWPPプラグインを使うのが確実です。

でも参考として一応残しておきます。

PHPによるPV数取得のまとめ

ここで紹介した以下2つの方法

余程のことがなければ1つめを使ってください。

以上、WordPress・PHPでPV数取得でした。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。