キャッシュが効いてるWordPressサイトでアクセス数を更新する方法
なるべくプラグインには頼らない!
をモットーにテーマをカスタマイズしています。
その中で、よくブログで目につく「人気の投稿」表示機能というのがありますが、これを下記リンクのコードを参考に、プラグイン無しで実装してみました。
I'm working on a site trying to get a popular posts section on it. I've tried plugins but they require wp_head() and that destroys the jCarousel that I have on the site. I've implemented the code to
要は、アクセスが発生したらその度に投稿のカスタムフィールドにカウントアップしていく、という設定です。
さて、これで上手く行ったと思っていたら・・・
全然アクセス数が更新されない。
何故か?
・・・
・・・
・・・
キャッシュだ。
WordPressサイトでは、表示を早くするためにキャッシュプラグインを導入するのが常であり、もれなく当方のサイトもそのようにしていました。
そうなると、アクセスがあった際にキャッシュされたページを優先的に表示するため、アクセス数を更新する関数がスルーされてしまいます。
なので、キャッシュを有効にしているサイトでもアクセス数を更新するためには、ajaxを介して関数を実行するのだそうです。
コードは下記リンクを参照。
My site cached by "wp-supper cache" plugin and "cloudflare.com" So my php function to count post views working incorrectly. I try to use ajax for it but I'm noob with JS code so I can not know wh...
ついでに管理画面の投稿一覧画面にアクセス数を表示する設定も含まれています。
1点気づいたのですが、これまでは
[php]function postViews_callback(){if( is_single() ){
setPostViews($_GET['postid']) ;
echo "Success, Post id: ".$_GET['postid'];
die();
}
}[/php]
のようにis_single()
で条件分岐をしていましたが、これだとajaxを経由しているためか、アクセス数が更新されませんでしたので、除く必要があるようです。
ちなみに、 W3 Total Cacheだと、
[php][/php]と書けばキャッシュが有効でも使えるそうです。
Simple guide on how to track and display popular posts by views in WordPress without a plugin. Show popular posts without a plugin.
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ