所以,我想做的是制作一个ajax过滤器,这是过滤器代码的一部分,它基于来自过滤器表单的数据构建$args,然后(不是在这段代码中)它给出查询的结果。
我有3个自定义分类法(及其表单功能):
-type\\u emp(一个选项来自表单)
-status\\u emp(一个或多个选项来自表单)
-city\\u emp(一个选项来自表单)
问题是:I\'m not able to use them in the WP_Query as filters, since they will match the post even if it doesn\'t have all the terms.
例如,type\\u emp为1,status\\u emp为null,city\\u emp为2
它将返回帖子:
(type\\u emp/status\\u emp/city\\u emp)帖子1(1/2/3)
帖子2(2/1,4/2)
帖子3(1/4/2)
如您所见,post 3应该是唯一返回的,因为他拥有所有参数。Is there a way to restrict the query like that?
此外,我需要多次匹配status\\u emp,有时需要多个术语,在代码中,我分解字符串以生成一个数组,并将其作为术语放入税务查询中。How to I match posts that have at least one of them?
$args = array( \'orderby\' => \'date\', \'order\' => \'DESC\', \'post_status\' => \'publish\' ); if ( isset( $_POST[\'typefilter\'] ) && $_POST[\'typefilter\'] !== \'\' ) { $args[\'post_type\'] = \'post_type_x\'; $args[\'tax_query\'] = array( array( \'taxonomy\' => \'type_emp\', \'field\' => \'id\', \'terms\' => $_POST[\'typefilter\'] ) ); } if ( $_POST[\'typefilter\'] == \'\') { $args[\'post_type\'] = \'post_type_x\'; } // If two or more options are selected they are sorted below $query = explode(\'&\', file_get_contents("php://input")); $params = array(); foreach( $query as $param ) { list($name, $value) = explode(\'=\', $param, 2); $params[urldecode($name)][] = urldecode($value); } if( isset( $params[\'statusfilter\'] ) && $_POST[\'statusfilter\'] !== \'\' ) { $args[\'tax_query\'] .= array( array( \'taxonomy\' => \'status_emp\', \'field\' => \'id\', \'terms\' => $params[\'statusfilter\'] ) ); } // for taxonomies / categories if( isset( $_POST[\'cityfilter\'] ) && $_POST[\'cityfilter\'] !== \'\') { $args[\'tax_query\'] .= array( array( \'taxonomy\' => \'city_emp\', \'field\' => \'id\', \'terms\' => $_POST[\'cityfilter\'] ) ); } $query = new WP_Query($args);很抱歉,如果我的问题有点混乱,但我尽量说清楚。