たむらんちたむらんちtamura.tottori.jp話題の流行りネタ、ライフハック、仕事、Web、IT系、SNS、行ってきたレビュー等をお届けします話題の格安SIM。viewsシェアするツイートするはてぶあなたが今、読んでいるカテゴリー:覚書スポンサーリンクtablepressプラグインで作成した表の中でショートコードで動的に取得した内容を表示したい場面があった。以下のような問題が発生した。動的に取得した値ではなく、前表示していた値(キャッシュの値)が表示されるしばらくたったら、更新されているログインユーザー時の場合は更新されているログインユーザーでない場合に更新されていない条件が複雑すぎて、何が原因かしらべていたら、下記の記事にたどりついた。モノグサにお灸これの原因は、ようは、テーブルプレスが、キャッシュを保持しておいて出力するとのこと。上記の解決方法として、tablepressの表を再更新する必要があるとのことだった。先人さん、いつも情報ありがとうございます。ソースコードを解析して、今回、もう少し、スマートに解決する方法を見つけたので、ご紹介。いつもは、こんな感じで設定しているはずだと思う。いつもは、こんな感じで設定しているはずだと思う。やって指定するこれで、キャッシュを使用せずに、常に最新の情報を取得して表示してくれる。解説tablepress\controllers\controller-frontend.php内で、以下の処理をおこなっている。hours.cache_table_outputが指定されていて、ログインユーザーでない場合は、24時間経過するまでは、キャッシュを使用するという処理になっている。cache_table_outputは、何かというと、tableをショートコードで作成するときに指定できるオプションなのである。こいつが、指定していない場合は、デフォルトでtrueになっているのだ。(ここまでの条件をすべてまとめると、最初に列挙した4つの条件にすべて当てはまる)tablepress\classes\class-render.php内。false,);}ここで列挙しているオプションは、テーブル作成時に指定できるオプションと捉えてよいと思う。他のオプションは解析してないので、もし使えそうな名前のオプションがあれば、grepかけてみてください。ちなみにこのget_default_render_options関数はテーブルを作成する以下で呼ばれます。ソースコードを読むと、$shortcode_attsで指定されているオプションを優先する処理になっていた。ブロガーであり「たむらんち」の家主です。BAR、撮影、鳥取が大好きです。半年に1回は帰省しています。おかげ様で月間5万人以上の方にブログを閲覧していただけるようになりました。得意分野は雑学、IT系です。