WP-Optimizeのキャッシュを投稿更新時などにリフレッシュする方法

プラグイン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 200 200 72 72