自前の素材サイトに記事一覧を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という項目にカウントアップされるようになりました。
※カスタムフィールドはデフォルトでは非表示なので、投稿/固定ページ編集画面右上「…(縦)」→設定→パネル→追加→カスタムフィールドをオンにして画面をリロードします。

