MENU

clean_blog_cache()

clean_blog_cache() は、WordPress マルチサイト環境において、特定のブログ(サイト)に関するキャッシュをクリアするための関数です。

サイトの情報(例:ドメイン、パス、オプション値など)は内部的にキャッシュされており、これが古くなると不整合や誤表示の原因になります。この関数を使うことで、特定ブログに関連するキャッシュを安全にクリアできます。

目次

基本構文

clean_blog_cache( $blog );
  • $blog は、ブログ(サイト)オブジェクトまたは ID を指定します。
  • 指定されたブログに関連する複数のキャッシュキー(オプション、詳細、レコード)を削除します。

引き数と戻り値

引き数説明
$blogint または object対象のブログ ID または WP_Site オブジェクト
戻り値説明
なし(void副作用的処理で戻り値なし

使用例

タグを使った使用例

$blog_id = 3;
clean_blog_cache( $blog_id );

ブログ ID「3」に関連するキャッシュをすべて削除します。サイト設定の変更直後などに有効です。

または WP_Site オブジェクトを使ってもOK:

$site = get_site( 3 );
clean_blog_cache( $site );

注意点

  • マルチサイト専用関数です。シングルサイト環境では使用できません。
  • キャッシュ削除後、get_site()get_blog_details() などが改めて情報を取得し直すため、呼び出しコストがやや上がります。
  • clean_blog_cache()サイト情報の整合性を保つために重要ですが、多用するとパフォーマンスに影響が出る場合があります。

よく一緒に使われる関数

get_blog_details()

$details = get_blog_details( $blog_id );

サイトの詳細情報を取得。キャッシュクリア後に使用すると最新情報が得られます。

update_blog_details()

update_blog_details( $blog_id, ['blogname' => '新しいサイト名'] );
clean_blog_cache( $blog_id );

サイト情報を更新後にキャッシュをクリアすることで、即時反映を可能にします。

switch_to_blog()

switch_to_blog( $blog_id );
clean_blog_cache( $blog_id );
restore_current_blog();

マルチサイトのブログを一時的に切り替える際、キャッシュ状態が正しいことを保証するために使用。

想定されるトラブル

サイト名や URL を変更したのに反映されない

キャッシュが残っていることで、古い情報が表示され続ける。

解決方法

update_blog_details() の直後に clean_blog_cache() を呼び出してキャッシュを明示的にクリアする。

新しいサイトが get_blog_details() で取得できない

登録直後のサイト情報がキャッシュされていない可能性。

解決方法

サイト追加後に clean_blog_cache( $blog_id ) を呼び出すことで、即座に情報が利用可能になる。

Q&A

シングルサイトで使う意味はありますか?

ありません。clean_blog_cache() はマルチサイト専用です。

サイト URL を変更したら自動でキャッシュはクリアされますか?

一部は自動ですが、手動で clean_blog_cache() を呼び出すのが確実です。

$blog に整数とオブジェクトのどちらを渡すべき?

どちらも対応しています。既に get_site() を使っている場合はオブジェクトのままでOKです。

まとめ

clean_blog_cache() は、WordPress マルチサイトのサイト情報のキャッシュをクリアするための重要な関数です。

特定のブログに対する情報変更後にこの関数を使用することで、表示の不整合や更新遅延を防ぐことができます。マルチサイト構築やカスタム管理ツール開発においては、ぜひ覚えておきたい関数のひとつです。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次