使用复选框查询自定义发布类型

时间:2015-11-04 作者:Ravi Ram

我有一个带有复选框“课程位置”字段的自定义帖子类型(课程)。我想用选中的项目筛选列表页面。

当我选中一个复选框时,下面的代码可以工作,但是,它不能处理多个选中的项目。

我怎么能

或声明

正在努力返回许多课程?

CODE

$searchArray = array();
$searchArray[] = array(\'relation\' => \'OR\',);

// loop over checked checkboxes
if(!empty($_POST[\'course_location\'])) {
    foreach($_POST[\'course_location\'] as $check) {
        // echo \'<h1>\'.$check.\'</h1>\'; 
        $searchArray[] = array(\'key\' => \'course_location\',\'value\' => $check,\'compare\' => \'LIKE\',);
    }
}

$args = array(
    \'post_type\' => array( \'course\' ),
    \'posts_per_page\' => 25,
    \'meta_query\' => $searchArray
    );

$wp_query = new WP_Query($args);

FORM

<form name="courseSearch" id="courseSearch" method="post">
los-angeles-county: <input type="checkbox" name="course_location[]" value="los-angeles-county" /><br/>
orange-county: <input type="checkbox" name="course_location[]" value="orange-county" /><br/>
test: <input type="checkbox" name="course_location[]" value="test" /><br/>
<input type="submit">
</form>

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

您没有构建meta_query 正确地这很接近,但不完全正确。

$searchArray = array();
$searchArray = array(\'relation\' => \'OR\',); // here is the change

// loop over checked checkboxes
if(!empty($_POST[\'course_location\'])) {
    foreach($_POST[\'course_location\'] as $check) {
        // echo \'<h1>\'.$check.\'</h1>\'; 
        $searchArray[] = array(\'key\' => \'course_location\',\'value\' => $check,\'compare\' => \'LIKE\',);
    }
}
正如您所写的,您得到了:

array(3) {
  [0]=>
  array(1) {
    ["relation"]=>
    string(2) "OR"
  }
  [1]=>
  array(3) {
    ["key"]=>
    string(15) "course_location"
    ["value"]=>
    string(1) "a"
    ["compare"]=>
    string(4) "LIKE"
  }
  [2]=>
  array(3) {
    ["key"]=>
    string(15) "course_location"
    ["value"]=>
    string(1) "b"
    ["compare"]=>
    string(4) "LIKE"
  }
}
您需要:

array(3) {
  ["relation"]=>
    string(2) "OR"
  [0=>
  array(3) {
    ["key"]=>
    string(15) "course_location"
    ["value"]=>
    string(1) "a"
    ["compare"]=>
    string(4) "LIKE"
  }
  [1]=>
  array(3) {
    ["key"]=>
    string(15) "course_location"
    ["value"]=>
    string(1) "b"
    ["compare"]=>
    string(4) "LIKE"
  }
}

相关推荐

使用WP_QUERY混合发布日期和发布元值

正在寻找使用自定义字段将旧帖子推送到WP\\u查询中的方法。例如,我今年有10篇文章,想将过去的2篇文章重新发布到自定义rss提要。因此,对于旧帖子,必须按照帖子日期和帖子元中的值对帖子进行排序:new post - (post date: 2018-11-11) new post - (post date: 2018-11-10) old post - (post date: 2017-05-01, post-meta date: 2018-11-09) new post - (