税务查询限额Taxonomy Query 在WordPress中,支持以下三个参数operator
参数:IN
, NOT IN
和AND
. 所以它基本上不能做你想做的事。即使使用advanced(tax_query
) 查询。
元查询和可能性
您需要稍微移动您的概念,并使用后期元字段/数据。这个
WP_Query
使用
WP_Meta_Query
, 这比
WP_Tax_Query
. (对于这个问题)主要的一点是,它通过
compare
参数,您也可以按其排序:
\'orderby\' => \'meta_value_num\'
和
\'orderby\' => \'meta_value\'
.
(string) compare
- 操作员进行测试。可能的值为\'=\'
, \'!=\'
, \'>\'
, \'>=\'
, \'<\'
, \'<=\'
, \'LIKE\'
, \'NOT LIKE\'
, \'IN\'
, \'NOT IN\'
, \'BETWEEN\'
, \'NOT BETWEEN\'
, \'EXISTS\'
(仅在WP>=3.5时),以及\'NOT EXISTS\'
(也仅在WP>=3.5时)。默认值为\'=\'
.
引用自Meta Query 部分WP_Query
文件@Codex wp dot组织
因此,您可以(应该)切换要排序的分类法,并根据其进行筛选/搜索,以成为自定义字段/元数据。
不可能?分类学的阶梯式救援
正如我在答案顶部所解释的,有一个
IN
用于分类查询的运算符。所以你可以打电话给
get_terms()
Source: queryposts.com 并获取所有在您范围内的术语,然后构建一系列分类单元/术语,作为您的“限制器”。
// Set "min/max"-limits:
$min = 256;
$max = 768;
// Get all terms in that taxonomy
$memory = get_terms( array( \'memory_size\' ) );
// Container for our values
$mem_range = array();
// Check if we got an error
if ( ! is_wp_error( $memory ) )
{
foreach ( $memory as $val )
{
// Convert to absolute integer for comparison
$val = absint( $val );
// Add to stack
$val >= $min
AND $val <= $max
AND $mem_range[] = $val;
}
}
// Debug
else
{
// Output only for admin users and others that have that cap
current_user_can( \'manage_options\' )
AND print $memory->get_error_message();
}
// Setup the basic arguments
$args = array( \'post_type\' => \'hardware\' );
// Check if we got some terms in range
if ( ! empty( $mem_range ) )
{
$args[\'tax_query\'] = array( array(
\'taxonomy\' => \'memory_size\',
\'field\' => \'slug\',
\'terms\' => $mem_range,
\'operator\' => \'IN\'
) );
}
// Grab the results
$hardware_search = new WP_Query( $args );
结论虽然这对于高性能网站来说可能不是最好的主意,因为你要为一个任务做两个查询,但它可能满足一个人的需要。对于更高级的单一查询,我仍然建议切换到元数据。