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
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. |
Skip to note 2 content
Codex
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) ) )