clean_attachment_cache()
は、WordPress の 添付ファイル(メディア)に関連するキャッシュをクリアするための関数です。
主に投稿の保存・削除・変更時などに呼び出され、対象のメディア(画像など)に対するキャッシュされた情報をリセットし、最新の状態に保つ役割を果たします。
特に、wp_get_attachment_metadata()
や wp_get_attachment_image_src()
などの出力が正確であるように整えるために必要です。
基本構文
clean_attachment_cache( $post_id );
$post_id
に指定した添付ファイルのキャッシュを削除します。- 内部的には
clean_post_cache()
を呼び出しつつ、添付ファイル専用の処理が追加されています。
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$post_id | int | キャッシュを削除する添付ファイルのID |
戻り値 | 型 | 説明 |
---|---|---|
なし(void ) | ― | 何も返さない(副作用型) |
使用例
タグを使った使用例
$attachment_id = 123; // 例: メディアライブラリ内の画像ID
clean_attachment_cache( $attachment_id );
このコードは、画像ID 123 に関連するキャッシュをクリアします。たとえば、画像を差し替えた直後などに使用することで、古いキャッシュを防ぎます。
注意点
- この関数は 添付ファイルに限定されています。他の投稿タイプには
clean_post_cache()
を使用します。 - キャッシュクリア後、一部の関数(例:
wp_get_attachment_metadata()
)は再計算のために追加処理を要する場合があります。 - サイト全体に多用するとパフォーマンスに影響を及ぼす可能性があります。
よく一緒に使われる関数
wp_get_attachment_metadata()
$meta = wp_get_attachment_metadata( $attachment_id );
添付ファイルのメタデータ取得。キャッシュ削除後に再取得して最新情報を確保できます。
wp_update_attachment_metadata()
wp_update_attachment_metadata( $attachment_id, $new_meta );
メタデータ更新後に clean_attachment_cache()
を併用することで、確実に新データが反映されます。
clean_post_cache()
clean_post_cache( $post_id );
一般投稿タイプのキャッシュ削除。clean_attachment_cache()
の下位互換的な役割。
想定されるトラブル
キャッシュが残って古い画像が表示される
画像を差し替えたのにサムネイルなどで古い画像が表示される。
解決方法
clean_attachment_cache( $attachment_id )
を実行し、キャッシュをクリアする。
添付ファイルではない投稿に対して使用した
通常の投稿・固定ページに対して使用しても効果がない。
解決方法
添付ファイルかどうかを get_post_type()
で確認してから使用する。
Q&A
まとめ
clean_attachment_cache()
は、WordPress のメディア管理において非常に重要なキャッシュクリア関数です。
画像のメタ情報や出力結果を常に正しい状態に保つために、更新処理後に明示的に呼び出すことで、ユーザーに最新の情報を提供することができます。
特にカスタムアップローダーや画像差し替え処理を扱う開発者にとっては、必須の関数です。
コメント