Query multiple meta values

时间:2013-08-25 作者:Trekdrop

我正在开发一个“复选框过滤器”,通过选中值查询帖子。看见this link编辑:正如您所看到的,此链接中只有2篇帖子,用户检查“MINI”后会得到一个很好的结果,用户检查“MINI”和“COMPACT”后不会给出结果,而不是2篇帖子)。现在,如果用户只检查1个值,它就会工作。一旦用户检查了多个,则不会给出任何结果。我正在使用以下元查询代码(这是较长代码的一部分,这就是为什么会有if语句):

if (gap_meta_values($key, $value)) {
            $args[\'meta_query\'][] = array(
                \'key\' => $key,
                \'value\' => $value,
                \'compare\' => \'LIKE\'

            );
因此,如果只有1个元值,这是可行的。但是,如果有多个值,则不起作用。所以我尝试了几种方法来让它工作,我认为这是因为键和值之间没有关系。所以我尝试了这个:

if (gap_meta_values($key, $value)) {
            $args[\'meta_query\'][] = array(
            \'relation\' => \'OR\',
                array (
                \'key\' => $key,
                \'value\' => $value,
                \'compare\' => \'LIKE\'
                )

        );
        }
但这两者似乎都不起作用。如何做到这一点,使其能够从选中的值中查询所有帖子?感谢您的回复。

1 个回复
SO网友:s_ha_dum

You code is generating a broken meta_query. 您的代码将生成如下内容:

array(1) {
  ["meta_query"]=>
  array(2) {
    [0]=>
    array(2) {
      ["relation"]=>
      string(2) "OR"
      [0]=>
      array(3) {
        ["key"]=>
        string(4) "test"
        ["value"]=>
        string(10) "test_value"
        ["compare"]=>
        string(4) "LIKE"
      }
    }
}
应该是这样的:

array(1) {
  ["meta_query"]=>
  array(2) {
    ["relation"]=>
    string(2) "OR"
    [0]=>
    array(3) {
      ["key"]=>
      string(4) "test"
      ["value"]=>
      string(10) "test_value"
      ["compare"]=>
      string(4) "LIKE"
    }
  }
}
问题是后面的方括号:$args[\'meta_query\'][] 这是不正确的。要组合您的价值观,请执行以下操作:

$meta_q = array();

$key =\'test\';
$value=\'test_value\';

if (!empty($key) && !empty($value)) {
  $meta_q[] = array(
    \'key\' => $key,
    \'value\' => $value,
    \'compare\' => \'LIKE\'
  );
}

$key2 =\'test\';
$value2=\'test_value\';

if (!empty($key2) && !empty($value2)) {
  $meta_q[] = array(
    \'key\' => $key2,
    \'value\' => $value2,
    \'compare\' => \'LIKE\'
  );
}

$args = array(
  \'relation\' => \'OR\',
  \'meta_query\' => $meta_q,
);
var_dump($args);

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post