wp_nav_menu のフィルターフック と
Page No.2
navi menu のキャッシュ化
と、いうことで一度作ってしまったら、そんなに変更することもないであろう navi menu はキャシュ化してしまおう、というもくろみ。
そのもくろみとしては、
- ページ読み込みの際に、キャッシュファイルがあれば、それをロードして表示。
- 無ければ wp_nav_menu() を実行させて navi menu を生成。
- その時、javascript で Ajax にてキャッシュファイルを作るためのフラグとなる id=”make-cache” の input 要素も生成。
- その id=”make-cache” の input type=”hidden” の要素が存在する場合、javascript のロードとともに Ajax にてキャッシュファイルを作成。
- navi menu の内容が更新されたときは、taxonomy が保存されるときのフック、saved_term を使って対象のキャッシュファイルを削除する。
てな、具合でよかろうか。
キャッシュファイルが存在するときに、それをロードして表示するのは、header.php テンプレートにて。footer でもほぼ同じことをすることになるので、functions.php に関数化してもいいのだけれど。
そして、キャッシュファイルが存在しないときに、id=”make-hnav-cache” の input 要素の存在をトリガーとして起動するキャッシュファイル作成の Ajax の javascript。自分の場合、当たり前のように使う Ajax は関数にして持ち歩いている。あと、いちいち getElementById も打つのが面倒なので、それも関数にして持ち歩いている。と、いうことでその javascript。
そして、Ajax で受ける側の php。WordPress の作法にしたがって functions.php に関数として書き、wp_ajax_ のフックを使って登録する。
navi menu が変更され更新されたときは、キャッシュファイルも新しいものにバージョンアップしなければならない。前述してあるが、navi menu は一種の分類のように扱われているので、そのデータが更新され保存されるときは、term 同様に save_term action-hook が利用可能であり、そのフックを使って対象のキャッシュファイルが存在しているならば、それを消去する。キャッシュファイルが存在しなければ、その後ページにアクセスがあったときに、新しいキャッシュファイルが作成される。
以上である。
やはりキャッシュファイルの方が、軽く動いている感じがする。
Post : 2022/02/22 23:00