首頁 >後端開發 >php教程 >wordpress源码读研之困惑:If no taxonomy, assume tt_ids

wordpress源码读研之困惑:If no taxonomy, assume tt_ids

WBOY
WBOY原創
2016-06-20 12:32:18979瀏覽

在下读wordpress源码,颇多收获。下面函数里,"If no taxonomy, assume tt_ids"为何意?矛盾吧?既为空,哪来的 term_id ?可以假定么?既为空,如何从表 term_taxonomy 中选择?
请高手指点一二为盼。
/**
 * Will remove all of the term ids from the cache.
 *
 * @since 2.3.0
 * @uses $wpdb
 *
 * @param int|array $ids Single or list of Term IDs
 * @param string $taxonomy Can be empty and will assume tt_ids, else will use for context.
 * @param bool $clean_taxonomy Whether to clean taxonomy wide caches (true), or just individual term object caches (false). Default is true.
 */
function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
global $wpdb;

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 = $wpdb->get_results(" SELECT term_id, taxonomy FROM $wpdb->term_taxonomy WHERE 
                                  term_taxonomy_id IN ($tt_ids)");
$ids = array();
foreach ( (array) $terms as $term ) {
$taxonomies[] = $term->taxonomy;
$ids[] = $term->term_id;
wp_cache_delete($term->term_id, $term->taxonomy);
}
$taxonomies = array_unique($taxonomies);
} else {
$taxonomies = array($taxonomy);
foreach ( $taxonomies as $taxonomy ) {
foreach ( $ids as $id ) {
wp_cache_delete($id, $taxonomy);
}
}
}

foreach ( $taxonomies as $taxonomy ) {
if ( $clean_taxonomy ) {
wp_cache_delete('all_ids', $taxonomy);
wp_cache_delete('get', $taxonomy);
delete_option("{$taxonomy}_children");
// Regenerate {$taxonomy}_children
_get_term_hierarchy($taxonomy);
}

/**
 * Fires once after each taxonomy's term cache has been cleaned.
 *
 * @since 2.5.0
 *
 * @param array  $ids      An array of term IDs.
 * @param string $taxonomy Taxonomy slug.
 */
do_action( 'clean_term_cache', $ids, $taxonomy );
}

wp_cache_set( 'last_changed', microtime(), 'terms' );
}


回复讨论(解决方案)

If no taxonomy, assume tt_ids--如果参数 taxonomy 为空的话,我们就假定 参数 id 是 tt_ids ----term_taxonomy 表的
term_taxonomy_id .否则,视为 term_id.

如果 $taxonomy(分类名称)为空
则取 $ids(分类号)对应的分类名

因为后面的检索中是以分类名为基准的

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn