将数组作为值的META_QUERY具有多个数组

时间:2013-09-25 作者:user37950

已经找到了一些线索,

请参见此处:meta_query with array as value

但我对这样的多个meta\\u查询感到困惑:

for ($i=0; $i< count($amenities); $i++)
    {
        $count = count($arrays);
        $arrays[$count] = array(
                    \'key\' => \'amenities\',
                    \'value\' => $amenities[$i],
                    \'compare\' => \'LIKE\'
                    );
    }

for ($j=0; $j< count($amenities2); $j++)
    {
        $count2 = count($arrays2);
        $arrays2[$count2] = array(
                    \'key\' => \'amenities\',
                    \'value\' => $amenities[$j],
                    \'compare\' => \'LIKE\'
                    );
    }
那么,如何在下面的查询中使用“relation”=>“AND”包含$arrays2?

$the_query = new WP_Query(array(
        \'post_type\' => \'listing\',
        \'post_status\' => \'publish\', 
        \'category_name\' => \'private_rental\',
        \'meta_query\' => $arrays
    ));

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

默认关系为AND 所以你真的不需要指定,但我会告诉你怎么做。

实际上,您只是遇到了数组操作问题。

$amenities = array(\'a\',\'b\',\'c\');
$amenities2 = array(\'d\',\'e\',\'f\');
foreach ($amenities as $a)
{
  $arrays[] = array(
              \'key\' => \'amenities\',
              \'value\' => $a,
              \'compare\' => \'LIKE\'
              );
}

foreach ($amenities2 as $a2)
{
  $arrays2[] = array(
              \'key\' => \'amenities\',
              \'value\' => $a2,
              \'compare\' => \'like\'
              );
}
$meta_query = array(\'relation\' => \'AND\');
$meta_query[] = $arrays;
$meta_query[] = $arrays2;
var_dump($meta_query);
我还清理了你的代码。它过于复杂和破碎。这个if 语句在数组上进行迭代时使用过度$count = count($arrays); 没有必要排队,也没有像你那样做count在创建阵列之前对其进行初始化。即使它有效,您也有可能用一个值与另一个值碰撞。如果计数相等,则最终会覆盖数组的一部分,而不是添加到数组中。

当然,这不是组合最终数组的唯一方法。事实上,如果这是我的代码,我可能不会这样做。不过,这可能是最简单的演示方式。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register