clean_blog_cache()
は、WordPress マルチサイト環境において、特定のブログ(サイト)に関するキャッシュをクリアするための関数です。
サイトの情報(例:ドメイン、パス、オプション値など)は内部的にキャッシュされており、これが古くなると不整合や誤表示の原因になります。この関数を使うことで、特定ブログに関連するキャッシュを安全にクリアできます。
目次
基本構文
clean_blog_cache( $blog );
$blog
は、ブログ(サイト)オブジェクトまたは ID を指定します。- 指定されたブログに関連する複数のキャッシュキー(オプション、詳細、レコード)を削除します。
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$blog | int または 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()
は、WordPress マルチサイトのサイト情報のキャッシュをクリアするための重要な関数です。
特定のブログに対する情報変更後にこの関数を使用することで、表示の不整合や更新遅延を防ぐことができます。マルチサイト構築やカスタム管理ツール開発においては、ぜひ覚えておきたい関数のひとつです。
コメント