当サイトは広告収入で運営しています

【WordPress】プラグインなしでPV数をカウントするpost_views_countをカスタムフィールドに追加

このページにいいね!する

自前の素材サイトに記事一覧をPV順にソートする機能をつけたくて、funtions.phpにコードを追加してカスタムフィールドでpost_views_countをカウントできるようにしました。

プラグインの「WP-PostViews」を入れれば自動的にpost_views_countでPVをカウントアップできるらしい・・・のですが、なぜか私の環境で機能せず。(Cocoon利用、カスタマイズしまくり)

原因が分からないのでプラグインは諦め、funtions.phpをいじることにしました。

備忘録です。手順は以下3ステップ。

  • funtions.phpにコードをコピペ
  • count.phpを作ってFTPにアップロード
  • ウィジェットにショートコードを書く

この記事ですることは、ただ単にカスタムフィールドにpost_views_countを追加してカウントするだけです。

funtions.phpにコードを追加

こちらの記事を参考にさせていただきました。

子テーマのfunctons.phpに以下を追加

//PVカウント
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';
}
 
//カウントアップ用
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);
    }
}

//カウントアップ用関数呼び出し用ショートコード
function count_original() {
 ob_start(); 
 get_template_part('count');
 return ob_get_clean();
}
add_shortcode('count', 'count_original');

参考記事では、カウントアップ用関数をsingl.phpに挿入しています。

私は新たに「count.php」というファイルを作って子テーマ内にアップロードし、ショートコードで好きな場所に設置することにしました。

理由は、外したいと思ったときにsingl.phpのテンプレートをいじるのが何となく面倒だと思ったので。

count.phpを作ってFTPにアップロード

FTP(/自サイトのフォルダ/wp-content/themes/cocoon-child-master/)にアップロード

ファイル名・拡張子:count.php

<?PHP
setPostViews( get_the_ID() );
?>

ウィジェットにショートコード[count]でcount.phpを呼び出し

Cocoonの場合ですが、投稿本文下・固定ページ本文下というウィジェットがあります。

そこにカスタムhtmlまたはテキストウィジェットで [count]と書いて保存します。

※[]は半角カッコに書き換えます。

これで、投稿・固定ページにアクセスがある度にカスタムフィールド※でpost_views_countという項目にカウントアップされるようになりました。

※カスタムフィールドはデフォルトでは非表示なので、投稿/固定ページ編集画面右上「…(縦)」→設定→パネル→追加→カスタムフィールドをオンにして画面をリロードします。

タイトルとURLをコピーしました