プラグインWP-Optimizeを利用しているWordPressサイトがある。
サイト高速化の一環として、このプラグインのページキャッシュ機能を有効化しているのだが、ページや投稿を更新したとき、勝手にキャッシュも更新されると最高だ。
しかし設定ページにそのようなオプションはなく、このままでは投稿の更新が反映されるまで最長で“キャッシュ期間”要する状態であった。
調べるとキャッシュのパージ用にパブリック函数が用意されている。
WordPressのtransition_post_statusアクションから呼び出すことで、ページ更新時はそのページのキャッシュのみを、新しい投稿が公開された場合などには全ページのキャッシュをパージする簡易スクリプトをfunctions.phpに記述した、のでここに紹介。
/**
* 投稿ステータスの変化に応じてWP-Optimizeのキャッシュをパージするスクリプト.
*
* `$new_status`と`$old_status`が持ち得る値は下記Codexページを参照.
*
* https://codex.wordpress.org/Post_Status_Transitions
*/
add_action(
'transition_post_status',
function ( $new_status, $old_status, $post ) {
// 投稿タイプ`attachment`を除外.
if ( 'attachment' === $post->post_type ) {
return;
}
// 投稿が"更新"された場合に該当のページキャッシュのみパージ.
if ( $old_status === $new_status && 'publish' === $new_status ) {
WPO_Page_Cache::delete_single_post_cache( $post->ID );
return;
}
// 投稿ステータスが"公開"から別ステータスへ,あるいは別ステータスから"公開"へ変化した場合は全ページのキャッシュをパージ.
if ( 'publish' === $old_status || 'publish' === $new_status ) {
WP_Optimize()->get_page_cache()->purge();
return;
}
},
10,
3
);
6162434398731464902
https://www.storange.jp/2024/07/purge-wpo-cache-when-post-status-changed.html
https://www.storange.jp/2024/07/purge-wpo-cache-when-post-status-changed.html
WP-Optimizeのキャッシュを投稿更新時などにリフレッシュする方法
2024-07-30T17:01:00+09:00
https://www.storange.jp/2024/07/purge-wpo-cache-when-post-status-changed.html
Hideyuki Tabata
Hideyuki Tabata
200
200
72
72