clean_object_term_cache()
は、投稿やカスタム投稿に関連付けられている「ターム(カテゴリ・タグなど)」のキャッシュを削除する関数です。
主にタクソノミー(taxonomy)情報が更新されたとき、キャッシュによる古い情報の参照を避けるために使われます。
この関数は、特定の投稿(またはオブジェクト)に紐づく分類情報を明示的にリフレッシュさせる役割を担います。
基本構文
clean_object_term_cache( $object_ids, $object_type );
$object_ids
:キャッシュをクリアしたい投稿やカスタム投稿のID(単体または配列)$object_type
:投稿タイプ名(例:post
、page
、product
など)
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$object_ids | `int | array` |
$object_type | string | 投稿タイプ(例:post , page , custom_post_type など) |
戻り値 | 型 | 説明 |
---|---|---|
なし(void ) | ― | 副作用としてキャッシュを削除する。戻り値なし |
使用例
タグを使った使用例
$post_id = 123;
clean_object_term_cache( $post_id, 'post' );
投稿ID 123
に関連付けられたカテゴリーやタグなどのターム情報のキャッシュを削除します。たとえば、タームを直接データベース操作などで変更した場合に、この関数を使ってキャッシュを更新します。
注意点
- 正しい
$object_type
の指定が重要 -
誤った投稿タイプを指定するとキャッシュ削除が効かない。
- 自動では呼ばれないケースもある
-
タームや投稿データを手動で更新した場合、明示的に呼び出す必要があります。
- すべてのタクソノミーに影響
-
対象オブジェクトに関連する全タクソノミー(カテゴリ、タグ、カスタム分類)のキャッシュを削除します。
よく一緒に使われる関数
wp_set_object_terms()
wp_set_object_terms( $post_id, [ 'news', 'event' ], 'category' );
clean_object_term_cache( $post_id, 'post' );
投稿にカテゴリをセットした後、即座にキャッシュを削除して反映を確実にする。
wp_remove_object_terms()
wp_remove_object_terms( $post_id, 'obsolete', 'category' );
clean_object_term_cache( $post_id, 'post' );
ターム削除後にキャッシュをクリアし、表示に反映させる。
get_the_terms()
clean_object_term_cache( $post_id, 'post' );
$terms = get_the_terms( $post_id, 'category' );
最新のターム情報を取得したい場合に事前にキャッシュを削除してから使用。
想定されるトラブル
カスタム投稿に追加したタームがすぐに表示されない
ターム情報がキャッシュされており、変更内容が反映されない。
解決方法
clean_object_term_cache()
を使って明示的にキャッシュを削除。
管理画面では反映されているが、フロント側で古いタームが表示される
キャッシュの整合性が崩れた状態。
解決方法
テーマまたはプラグイン内でキャッシュ削除を明示的に呼び出す。
Q&A
まとめ
clean_object_term_cache()
は、投稿に紐づくターム(カテゴリーやタグなど)のキャッシュを削除するための関数です。
特に、投稿やタームを直接編集するような高度なカスタマイズを行っている際に、キャッシュによる表示遅延を防ぐために非常に役立ちます。プラグインやテーマ開発時には、ターム情報が古くならないよう適切なタイミングで使用しましょう。
コメント