税务查询限额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 );
结论虽然这对于高性能网站来说可能不是最好的主意,因为你要为一个任务做两个查询,但它可能满足一个人的需要。对于更高级的单一查询,我仍然建议切换到元数据。