キャッシュが効いてるWordPressサイトでアクセス数を更新する方法

作成日:

なるべくプラグインには頼らない!

をモットーにテーマをカスタマイズしています。

その中で、よくブログで目につく「人気の投稿」表示機能というのがありますが、これを下記リンクのコードを参考に、プラグイン無しで実装してみました。

favicon
Wordpress popular posts without using plugins https://stackoverflow.com/questions/9472602/wordpress-popular-posts-without-using-plugins

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を介して関数を実行するのだそうです。

コードは下記リンクを参照。

favicon
Update Custom post field by Ajax on cached site https://wordpress.stackexchange.com/questions/107620/update-custom-post-field-by-ajax-on-cached-site/176169

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]

と書けばキャッシュが有効でも使えるそうです。

favicon
How to Display Popular Posts by Views in WordPress without a Plugin https://www.wpbeginner.com/wp-tutorials/how-to-track-popular-posts-by-views-in-wordpress-without-a-plugin/

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を楽しんでいます。

Loading...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。