创建分类查询的正确方式

时间:2013-07-31 作者:Derfder

如何动态构建分类查询?

我有以下代码用于动态创建颜色和价格数组:

$color = $_POST[\'color\'];
$price = $_POST[\'price\'];

if (!empty($color)) {
    $query_color =  array(
                        \'taxonomy\' => \'color\',
                        \'field\' => \'term_id\',
                        \'terms\' => $color
        );
} else {
    $query_color = array(
                    \'taxonomy\' => \'color\',
                    \'field\' => \'term_id\',
                    \'terms\' => \'\'
    );
}

if (!empty($price)) {
    $query_price =  array(
                        \'taxonomy\' => \'price\',
                        \'field\' => \'term_id\',
                        \'terms\' => $color
        );
} else {
    $query_price = array(
                    \'taxonomy\' => \'price\',
                    \'field\' => \'term_id\',
                    \'terms\' => \'\'
    );
}
我有一个查询代码:

$args = array(
        \'s\' => $search,
        \'post_type\' => array( \'post\' ),
        \'posts_per_page\' => 99999,
        \'tax_query\' => array(
            \'relation\' => \'OR\',
            $query_color,
            $query_price,
        )
);
$wp_query = new WP_Query( $args );
但是,效果不好。它总是显示所有帖子广告,而不仅仅是$color和$price数组中的内容。知道我做错了什么吗?

1 个回复
最合适的回答,由SO网友:Eric Holmes 整理而成

你得到了colorprice URL中的变量?如果是,您需要使用$_GET$_POST, 你可能想逃避或验证你的价值。

此外,我建议不要将它们定义为变量,因为如果这两种分类法都没有值,那么就不需要税务查询(这会加快查询速度)。

像这样做

$args = array( .....,
    \'tax_query\' => array( \'relation\' => \'OR\' ),
    ... );

if( $_GET[\'color\'] )
    $args[\'tax_query\'][] = array(
        \'taxonomy\' => \'color\',
        \'field\' => \'term_id\',
        \'terms\' => $color
    );

结束

相关推荐

Multidimensional array sort?

如果我有一组由循环检索的年份,那么每一年都可以有更多的post ID。例如:2008 => 3,7,8 2009 => 4,5,6 2010 => 9 代码为:query_posts(\'post_type=portfolio&posts_per_page=-1\'); if (have_posts()) : while (have_posts()) : the_post(); $t