ホームページ >バックエンド開発 >PHPチュートリアル >WordPress ソースコードを読むときの混乱: 分類がない場合は、tt_ids を想定します
以下のWordPressのソースコードを読んで、多くのことを学びましょう。以下の関数で、「分類法がない場合は tt_ids を仮定する」とはどういう意味ですか?矛盾してますよね?空なので、term_id はどこから来たものだと考えられますか?空なので、term_taxonomy テーブルから選択するにはどうすればよいでしょうか?
専門家のアドバイスをお願いします。
/**
* キャッシュからすべての用語 ID を削除します。
*
* @since 2.3.0
* @uses $wpdb
*
* @param int|array $ids 単一の または 用語 ID のリスト
* @param string $分類法は空にすることができ、tt_ids を想定します。それ以外の場合はコンテキストに使用されます。
* @param bool $clean_taxonomy 分類全体のキャッシュをクリーンするか (true)、または個別の用語オブジェクト キャッシュのみをクリーンするか (false)。 デフォルトは true です。
*/
function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
global $wpdb;
if ( !is_array( $ids) )
$ids = array($ids);
$taxonomies = array();
// 分類がない場合、
if ( empty($taxonomy) ) ) {
$tt_ids = array_map('intval', $ids);
$tt_ids = implode(', ', $tt_ids);
$terms = $wpdb->get_results(" SELECT term_id, 分類 FROM $wpdb->term_taxonomy WHERE
term_taxonomy_id IN ($tt_ids)");
$ids = array();
foreach ((array) $terms as $term ) {
$taxonomyes[] = $term->taxonomy;
$ids[] = $term->term_id
wp_cache_delete($term->term_id, $term->taxonomy); > }
$taxonomies = array_unique($taxonomy);
} else {
$taxonomies = array($taxonomy);
foreach ( $taxonomy として $taxonomy ) {
foreach ( $ ids as $id ) {
wp_cache_delete($id, $taxonomy);
}
}
}
foreach ( $taxonomy as $taxonomy ) {
if ( $clean_taxonomy ) {
wp_cache_delete('all_ids', $taxonomy);
wp_cache_delete('get', $taxonomy)
delete_option("{$taxonomy}_children"); // 再生成{$taxonomy}_children
_get_term_hierarchy($taxonomy);
/**
* 各分類の用語キャッシュが削除された後に 1 回起動します。
*
* @since 2.5.0
*
* @param array $ids 用語 ID の配列。
* @param 文字列 $taxonomy Taxonomy slug。
*/
do_action( 'clean_term_cache', $ids, $taxonomy ); > }
wp_cache_set( 'last_changed', microtime(), 'terms' );
ディスカッションへの返信 (解決策) 分類がない場合は、tt_ids を想定します—パラメータ分類が空の場合、パラメータ ID は tt_ids であると想定します -- - -term_taxonomy テーブルの -term_taxonomy_id。それ以外の場合は、term_id とみなされます。
以降の検索はカテゴリ名に基づいて行われるため