多个值的WP查询问题

时间:2016-11-09 作者:RichieR

我有一个带有键的自定义字段colour 值可以是redblue 个人岗位。

我知道返回红色或蓝色帖子的代码,即。?colour=red, 但是我不知道返回红色或蓝色帖子的代码。?colour=red&colour=blue.

我已经收到用户的代码帮助,但仍然无法工作。。。非常感谢您的帮助。。。谢谢

<form action ="" method="get">
    <INPUT TYPE="checkbox" NAME="colour" VALUE="red"> Red<BR>
    <INPUT TYPE="checkbox" NAME="colour" VALUE="blue"> Blue<BR>
    <button type="submit" name="">Search</button>
</form>

<?php
    if($_GET[\'colour\'] && !empty ($_GET[\'colour\'])) {
        $colours= $_GET[\'colour\'];
    }

    $meta_query = array(\'relation\' => \'OR\');
    foreach ($colours as $colour) {
        $meta_query[] = array(
          \'key\'       => \'colour\',
          \'value\'     => $colour,
          \'compare\'   => \'like\',
        );
    }
    $query = new WP_Query($args);
    while($query -> have_posts()) : $query -> the_post();
 ?>

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

您使用$args 但它并没有定义。

在您的表单中,您需要添加双括号以使$colors成为一个数组。

<INPUT TYPE="checkbox" NAME="colour[]" VALUE="red"> Red<BR>
<INPUT TYPE="checkbox" NAME="colour[]" VALUE="blue"> Blue<BR>
$值){$颜色[]=$值;}

$meta_query = array(\'relation\' => \'OR\');
foreach ($colours as $colour) {
    $meta_query[] = array(
      \'key\'       => \'colour\',
      \'value\'     => $colour,
      \'compare\'   => \'like\',
    );
}
$args = array(\'meta_query\'=>$meta_query);
$query = new WP_Query($args);

SO网友:Pat J

如果要在$_GET 参数(我认为这是您试图实现的),您不能这样做:

example.com/?colour=red&colour=blue
这将导致$_GET[\'colour\'] 存在blue, 因为这是最后一个参数。

相反,请按照以下方式创建您的URL:

example.com/?colour[]=red&colour[]=blue
这将导致$_GET[\'colour\'] 看起来更像这样:

Array
(
    [0] => red
    [1] => blue
)
请参见this Q&A on Stack Overflow 了解更多信息。

编辑以添加,也就是说,您应该确保array 首先。您可以这样做:

if($_GET[\'colour\'] && !empty ($_GET[\'colour\'])) {
    $colours = (array) $_GET[\'colour\'];
}
还有,你应该reallyvalidating, sanitizing, and escaping user data. Never blindly trust user data.