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