clean_term_cache()
は、WordPress でカテゴリやタグ、カスタムタクソノミーなどの ターム(term)データのキャッシュを手動で削除 するための関数です。
タームの情報を更新・削除した際、古いキャッシュが残っているとデータの不整合が発生することがあるため、この関数を使って明示的にキャッシュを削除します。
開発者が独自の操作を行った後に正しい表示を保証するために非常に有効です。
目次
基本構文
clean_term_cache( int|array $ids, string $taxonomy = '', bool $clean_taxonomy = true );
解説
$ids
:削除対象のターム ID、または ID の配列。$taxonomy
:対象のタクソノミー(例:’category’, ‘post_tag’ など)。未指定でも可能。$clean_taxonomy
:true
の場合、該当タクソノミーのキャッシュも一緒にクリア。
引き数と戻り値
引数 | 型 | 説明 |
---|---|---|
$ids | int または array | 削除対象のターム ID または ID の配列 |
$taxonomy | string | 削除対象のタクソノミー(オプション) |
$clean_taxonomy | bool | true の場合、タクソノミーのキャッシュも同時に削除(デフォルト:true) |
戻り値 | 型 | 説明 |
---|---|---|
なし | void | 値は返さず副作用のみ |
使用例
タグを使った使用例
// タームID 42 のキャッシュを削除(カテゴリー)
clean_term_cache( 42, 'category' );
タームID 42
に関連するキャッシュ(名前、スラッグ、親子関係など)を削除し、再取得時に最新情報が取得されます。
// タームID 5, 7, 10 のタグタクソノミーのキャッシュを削除
clean_term_cache( [5, 7, 10], 'post_tag' );
複数のタームIDを指定して一括削除も可能です。
注意点
- 存在しないタームIDを指定してもエラーにはならず無視されます。
$taxonomy
を省略した場合、削除対象が不明確になる可能性があります(パフォーマンスにも影響)。- タームを手動で更新した場合にのみ使用する。
wp_insert_term()
やwp_delete_term()
などの関数を使うと自動的に呼ばれるため、通常は不要です。
よく一緒に使われる関数
get_term()
clean_term_cache( 10, 'category' );
$term = get_term( 10, 'category' );
キャッシュを削除したうえで get_term()
を使うと、常に最新の情報を取得可能。
wp_insert_term()
$term = wp_insert_term( '新しいジャンル', 'genre' );
clean_term_cache( $term['term_id'], 'genre' );
タームを追加した直後にキャッシュを削除することで、別のプロセスで古いキャッシュを使わないようにします。
wp_update_term()
wp_update_term( 22, 'genre', [ 'name' => '修正済みジャンル' ] );
clean_term_cache( 22, 'genre' );
タームの名前やスラッグなどを変更後に呼び出し、変更がすぐに反映されるようにします。
想定されるトラブル
タームの変更が反映されない
get_term()
などで取得したデータが、変更後も古いまま表示される。
解決方法
変更後に clean_term_cache()
を実行してキャッシュを削除する。
ターム削除後も表示される
wp_delete_term()
の後にキャッシュ削除されず、一覧にまだ存在するように見える。
解決方法
clean_term_cache()
で強制的に削除。
Q&A
まとめ
clean_term_cache()
は、ターム(カテゴリ・タグ・カスタムタクソノミー)のキャッシュを明示的に削除するための関数で、情報の更新直後などに正しい表示を保証する目的で利用されます。
ターム操作をプログラムで行う場面や、キャッシュが残って不整合が発生する場合に活躍します。
正確なタクソノミーとタームIDを指定して、必要なタイミングで使うことが重要です。
コメント