MENU

clean_object_term_cache()

clean_object_term_cache() は、投稿やカスタム投稿に関連付けられている「ターム(カテゴリ・タグなど)」のキャッシュを削除する関数です。

主にタクソノミー(taxonomy)情報が更新されたとき、キャッシュによる古い情報の参照を避けるために使われます。

この関数は、特定の投稿(またはオブジェクト)に紐づく分類情報を明示的にリフレッシュさせる役割を担います。

目次

基本構文

clean_object_term_cache( $object_ids, $object_type );
  • $object_ids:キャッシュをクリアしたい投稿やカスタム投稿のID(単体または配列)
  • $object_type:投稿タイプ名(例:postpageproduct など)

引き数と戻り値

スクロールできます
引き数説明
$object_ids`intarray`
$object_typestring投稿タイプ(例: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

投稿を保存すると自動でキャッシュは削除されますか?

通常は削除されますが、独自の処理をしている場合は明示的な削除が必要です。

$object_typepost 以外を指定できますか?

はい、page やカスタム投稿タイプ名を正しく指定すれば使用可能です。

一括で複数投稿のキャッシュ削除はできますか?

$object_ids を配列で指定すれば複数投稿に対応可能です。

まとめ

clean_object_term_cache() は、投稿に紐づくターム(カテゴリーやタグなど)のキャッシュを削除するための関数です。

特に、投稿やタームを直接編集するような高度なカスタマイズを行っている際に、キャッシュによる表示遅延を防ぐために非常に役立ちます。プラグインやテーマ開発時には、ターム情報が古くならないよう適切なタイミングで使用しましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次