clean_term_cache()
最后更新于:2021-11-25 20:35:27
clean_term_cache( int|int[]$ids, string$taxonomy=”, bool$clean_taxonomy=true)Will remove all of the term IDs from the cache.
参数
- $ids
-
(int|int[]) (Required) Single or array of term IDs.
- $taxonomy
-
(string) (Optional) Taxonomy slug. Can be empty, in which case the taxonomies of the passed term IDs will be used.
Default value: ”
- $clean_taxonomy
-
(bool) (Optional) Whether to clean taxonomy wide caches (true), or just individual term object caches (false).
Default value: true
源文件
文件: gc-includes/taxonomy.php
function clean_term_cache( $ids, $taxonomy = '', $clean_taxonomy = true ) {
global $gcdb, $_gc_suspend_cache_invalidation;
if ( ! empty( $_gc_suspend_cache_invalidation ) ) {
return;
}
if ( ! is_array( $ids ) ) {
$ids = array( $ids );
}
$taxonomies = array();
// If no taxonomy, assume tt_ids.
if ( empty( $taxonomy ) ) {
$tt_ids = array_map( 'intval', $ids );
$tt_ids = implode( ', ', $tt_ids );
$terms = $gcdb->get_results( "SELECT term_id, taxonomy FROM $gcdb->term_taxonomy WHERE term_taxonomy_id IN ($tt_ids)" );
$ids = array();
foreach ( (array) $terms as $term ) {
$taxonomies[] = $term->taxonomy;
$ids[] = $term->term_id;
gc_cache_delete( $term->term_id, 'terms' );
}
$taxonomies = array_unique( $taxonomies );
} else {
$taxonomies = array( $taxonomy );
foreach ( $taxonomies as $taxonomy ) {
foreach ( $ids as $id ) {
gc_cache_delete( $id, 'terms' );
}
}
}
foreach ( $taxonomies as $taxonomy ) {
if ( $clean_taxonomy ) {
clean_taxonomy_cache( $taxonomy );
}
/**
* Fires once after each taxonomy's term cache has been cleaned.
*
* @since 2.5.0
* @since 4.5.0 Added the `$clean_taxonomy` parameter.
*
* @param array $ids An array of term IDs.
* @param string $taxonomy Taxonomy slug.
* @param bool $clean_taxonomy Whether or not to clean taxonomy-wide caches
*/
do_action( 'clean_term_cache', $ids, $taxonomy, $clean_taxonomy );
}
gc_cache_set( 'last_changed', microtime(), 'terms' );
}