函数文档

get_tax_sql()

💡 云策文档标注

概述

get_tax_sql() 函数根据给定的分类法查询数组,生成用于附加到主查询的 SQL 语句部分。它通过实例化 WP_Tax_Query 类并调用其 get_sql() 方法来实现。

关键要点

  • 函数接受三个参数:$tax_query(必需,紧凑的分类法查询数组)、$primary_table(必需,主表名)和 $primary_id_column(必需,主 ID 列名)。
  • 返回一个字符串数组,包含 'join' 和 'where' 键,分别对应 SQL 的 JOIN 和 WHERE 子句。
  • 该函数自 WordPress 3.1.0 版本引入,是 WP_Tax_Query 类的封装,用于简化分类法查询的 SQL 生成。

代码示例

$tax_query = array(
    array(
        'taxonomy' => 'category',
        'field'    => 'slug',
        'terms'    => array( 'cat-a', 'cat-b' ),
    )
);

global $wpdb;
$tax_sql = get_tax_sql( $tax_query, $wpdb->posts, 'ID' );

📄 原文内容

Given a taxonomy query, generates SQL to be appended to a main query.

Description

See also

Parameters

$tax_queryarrayrequired
A compact tax query
$primary_tablestringrequired
$primary_id_columnstringrequired

Return

string[]

Source

function get_tax_sql( $tax_query, $primary_table, $primary_id_column ) {
	$tax_query_obj = new WP_Tax_Query( $tax_query );
	return $tax_query_obj->get_sql( $primary_table, $primary_id_column );
}

Changelog

Version Description
3.1.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Get SQL query part for taxonomy

    $tax_query = array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => array( 'cat-a', 'cat-b' ),
        )
    );
    
    global $wpdb;
    $tax_sql = get_tax_sql( $tax_query, $wpdb->posts, 'ID' );

    Output would be something like:

    Array
    (
        [join] =>  INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
        [where] =>  AND ( wp_term_relationships.term_taxonomy_id IN (3,4,10,19,25,95) )
    )