clean_site_details_cache()
は、WordPressのマルチサイト(Multisite)機能で使用される関数で、特定のサイト(ブログ)のキャッシュをクリアするために使用されます。
特に、サイトの詳細情報(ドメイン、パス、登録日時など)が変更された場合に、キャッシュされた情報を更新する必要がある場面で利用されます。この関数により、サイトの変更が即座に反映されるようになります。
基本構文
clean_site_details_cache( int $site_id );
解説
この関数は、指定したサイトIDに基づいて、以下のキャッシュを削除します:
site-details
(site_id
ベースのサイト情報)get_id_from_blogname
(サブドメイン形式のブログ名キャッシュ)- その他、
get_blog_details()
などで使用される内部キャッシュ
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$site_id | int | キャッシュを削除したいサイトのID |
戻り値 | 型 | 説明 |
---|---|---|
なし | void | 何も返さない(副作用のみ) |
使用例
タグを使った使用例
// サイトID 5 のキャッシュを削除
clean_site_details_cache( 5 );
サイトID 5 のサイト情報が更新された後、この関数を呼び出すことで get_blog_details()
や get_sites()
による出力が正しく反映されるようになります。
注意点
- この関数はマルチサイト環境でのみ意味を持ちます。シングルサイトでは無効。
- サイトのキャッシュが削除されるため、頻繁に実行するとパフォーマンスに悪影響を及ぼす可能性があります。
- データベース自体は変更されません。あくまでキャッシュクリア専用の関数です。
よく一緒に使われる関数
get_blog_details()
clean_site_details_cache( $site_id );
$details = get_blog_details( $site_id );
キャッシュ削除後にサイト情報を取得し、最新のデータを利用。
update_blog_details()
update_blog_details( $site_id, array( 'blogname' => '新しい名前' ) );
clean_site_details_cache( $site_id );
サイト情報を更新後、キャッシュをクリアして反映させる。
wp_cache_delete()
wp_cache_delete( $site_id, 'site-details' );
clean_site_details_cache()
と同様の効果を個別に実施したい場合に使用。
想定されるトラブル
サイト情報を変更しても表示に反映されない
get_blog_details()
などがキャッシュを返している可能性あり。
解決方法
clean_site_details_cache()
を呼び出してキャッシュを削除する。
マルチサイトで削除済みサイトの情報が残っている
キャッシュに古い情報が残っており、実際には削除されているのに表示され続ける。
解決方法
削除後に clean_site_details_cache( $site_id )
を実行して同期を取る。
Q&A
まとめ
clean_site_details_cache()
は、WordPressマルチサイト環境においてサイトの情報を更新した際に、古いキャッシュを削除して最新情報を反映させるために必要な関数です。
get_blog_details()
などのキャッシュされた関数の整合性を保つためにも、管理ツールやプラグイン開発で積極的に活用すべき重要な関数です。
コメント