WP_Query-foreach数组

时间:2018-07-17 14:54:44

标签: arrays wordpress

在WP_Query中,当选中一个复选框组时,我需要一些动态数组。

到目前为止的代码是:

$args = array(
  'post_type' => 'hold',
  'meta_query' => array(
    'relation' => 'AND',
      array(
        'key' => 'hold_serie',
        'value' => 'serie3',
        'compare' => 'LIKE'
       ),
       array(
         'relation' => 'OR',
         'options' => array()
       ),
  ),
);

$days = array('man', 'tir', 'ons');

foreach ($days as $value_day) {
  $args['meta_query']['options'] = array(
    'key' => 'hold_day',
    'value' => $value_day,
    'compare' => 'LIKE'
  );
}

我有一个复选框组,它将与$ days-array()组成相同的数组。 我希望实现的是,将重复执行具有'key'=>'hold_day'的数组3次,并且WP_Query将查看所有包含“ man”,“ tir”或“ on”的帖子“。

在这一点上,WP_query只接受帖子,数组中的最后一个值,在这种情况下为“ on”。 如果我删除“ ons”,则数组仅包含“ man”和“ tir”,它将仅找到帖子,其中“ hold_day” =“ tir”。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您无需使用代码的第二部分。 您可以使用数组作为元键的值,但是在这种情况下,您需要在compare字段中使用“ IN”。 您的代码应为

$args = array(
  'post_type' => 'hold',
  'meta_query' => array(
    'relation' => 'AND',
      array(
        'key' => 'hold_serie',
        'value' => 'serie3',
        'compare' => 'LIKE'
       ),
       array(
        'relation' => 'OR',
        'key' => 'hold_day',
        'value' => array('man', 'tir', 'ons'),
        'compare' => 'IN'
       ),
  ),
);

尝试上面的代码,让我知道结果。 谢谢