如何动态构建分类查询?
我有以下代码用于动态创建颜色和价格数组:
$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数组中的内容。知道我做错了什么吗?
最合适的回答,由SO网友:Eric Holmes 整理而成
你得到了color
和price
URL中的变量?如果是,您需要使用$_GET
不$_POST
, 你可能想逃避或验证你的价值。
此外,我建议不要将它们定义为变量,因为如果这两种分类法都没有值,那么就不需要税务查询(这会加快查询速度)。
像这样做
$args = array( .....,
\'tax_query\' => array( \'relation\' => \'OR\' ),
... );
if( $_GET[\'color\'] )
$args[\'tax_query\'][] = array(
\'taxonomy\' => \'color\',
\'field\' => \'term_id\',
\'terms\' => $color
);