clean_post_cache()
は、特定の投稿・カスタム投稿タイプのキャッシュ(オブジェクトキャッシュやターム、メタデータなど)を削除する WordPress の内部関数です。
投稿の内容やステータスを更新した際にキャッシュが残っていると、フロントエンドや管理画面に古い情報が表示されてしまうことがあります。
この関数を使えば、対象投稿のあらゆる関連キャッシュを明示的に削除でき、即座に最新の状態を反映できます。
基本構文
clean_post_cache( $post_id );
解説
$post_id
:キャッシュをクリアしたい投稿の ID(整数)
この関数は投稿 ID に紐づいた以下のようなキャッシュをクリアします:
- 投稿本体(
get_post()
の結果) - 投稿のターム情報(カテゴリー・タグ)
- 投稿メタ情報(カスタムフィールド)
- パーマリンク
- グローバル変数
$post
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$post_id | int | キャッシュを削除する投稿の ID |
戻り値 | 型 | 説明 |
---|---|---|
なし | — | 副作用としてキャッシュ削除が行われる |
使用例
タグを使った使用例
$post_id = 123;
// 投稿の内容を更新したあとにキャッシュを削除
wp_update_post( [
'ID' => $post_id,
'post_title' => '更新されたタイトル'
] );
clean_post_cache( $post_id );
投稿を更新した直後にキャッシュをクリアして、変更がすぐに反映されるようにしています。
注意点
- 投稿 ID のみを引数にとる点に注意
-
WP_Post オブジェクトではなく、ID を渡す必要があります。
- 自動キャッシュ削除が行われることも多いため、過度な使用は不要
-
通常の投稿更新処理では内部でこの関数が呼ばれるため、重複呼び出しに注意。
- 特定のカスタム投稿タイプや独自処理では明示的に必要な場面がある
-
例:メタ情報やタームを
update_post_meta()
などで更新した場合。
よく一緒に使われる関数
wp_update_post()
wp_update_post( [
'ID' => $post_id,
'post_content' => '新しい本文'
] );
clean_post_cache( $post_id );
投稿を更新した直後にキャッシュをクリア。
update_post_meta()
update_post_meta( $post_id, 'custom_key', '新しい値' );
clean_post_cache( $post_id );
カスタムフィールド変更後にキャッシュをクリアして反映。
get_post()
$post = get_post( $post_id );
clean_post_cache( $post_id );
投稿取得後、キャッシュを明示的に削除。
想定されるトラブル
投稿を更新しても表示が変わらない
キャッシュが残っており、古い内容が表示されてしまう。
解決方法
更新後に clean_post_cache()
を実行することで、キャッシュを削除し即時反映。
タクソノミーの変更が反映されない
カテゴリーやタグを wp_set_post_terms()
で変更しても、反映されないケースがある。
解決方法
ターム変更後に clean_post_cache()
を呼び出すことで整合性を取る。
Q&A
まとめ
clean_post_cache()
は、投稿やカスタム投稿タイプに関するキャッシュを削除して、常に正しいデータを表示させるための重要な内部関数です。
通常の編集操作では自動的に呼び出されますが、独自処理やメタ更新、タクソノミー操作後には明示的に使用することで、キャッシュ整合性を維持することができます。
開発中に「更新が反映されない」と感じた時は、この関数の利用を検討しましょう。
コメント