投稿PV数はプラグインを使えば表示できます。
ただ次のように取得したかったんです。
WordPressでPHPから投稿PV数を調べる方法
その方法が分かったので、記録しておきます。
目次
方法1.WordPress Popular PostsのAPIを使う
1つめは次のプラグインAPIを活用すること
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数取得でした。
フク郎
最新記事 by フク郎 (全て見る)
- 最大5,000円報酬をもらうために、招待を受入れていただけませんか? - 8月 27, 2024