【キャッシュ問題】tablepress内でショートコードで出力した内容が更新されない問題を解決
tablepressプラグインで作成した表の中でショートコードで動的に取得した内容を表示したい場面があった。 で、以下のような問題が発生した。 動的に取得した値ではなく、前表示していた値(キャッシュの値)が表示される しばらくたったら、更新されている ログインユーザー時の場合は更新されている ログインユーザーでない場合に更新されていない 条件が複雑すぎて、何が原因かしらべていたら、下記の記事にたどりついた。 Tablepressのキャッシュ問題 モノグサにお灸 これの原因は、ようは、テーブルプレスが、キャッシュを保持しておいて出力するとのこと。で、上記の解決方法として、tablepressの表を再更新する必要があるとのことだった。先人さん、いつも情報ありがとうございます。 ソースコードを解析して、今回、もう少し、スマートに解決する方法を見つけたので、ご紹介。 解決方法 ショートコードのオプションに cache_table_output=false を指定する 使用例は以下 [crayon-62e3d2389a210000159388/] これで、キャッシュを使用せずに、常に最新の情報を取得して表示してくれる。 解説 tablepress\controllers\controller-frontend.php内で、以下の処理をおこなっている。 [crayon-62e3d2389a219714965170/] cache_table_outputが指定されていて、ログインユーザーでない場合は、24時間経過するまでは、キャッシュを使用するという処理になっている。 で、cache_table_outputは、何かというと、tableをショートコードで作成するときに指定できるオプションなのである。 こいつが、指定していない場合は、デフォルトでtrueになっているのだ。(ここまでの条件をすべてまとめると、最初に列挙した4つの条件にすべて当てはまる) tablepress\classes\class-render.php内。 [crayon-62e3d2389a21b467450592/]
2018/01/21 15:46