Php 如何在元查询wordpress中形成动态键值数组
这是我的元查询Php 如何在元查询wordpress中形成动态键值数组,php,wordpress,Php,Wordpress,这是我的元查询 $args = array( 'post_type' => 'auto', 'meta_query' => array( array( 'key' => 'a', 'value' => 'test', ), array( 'key' => 'b', 'val
$args = array(
'post_type' => 'auto',
'meta_query' => array(
array(
'key' => 'a',
'value' => 'test',
),
array(
'key' => 'b',
'value' => 'test',
),
array(
'key' => 'c',
'value' => '',
),
array(
'key' => 'd',
'value' => '',
),
array(
'key' => 'e',
'value' => '',
),
array(
'key' => 'f',
'value' => '',
),
array(
'key' => 'g',
'value' => '',
),
),
);
我需要动态地形成数组,就像如果某个键的数组值为null,那么它就不应该附加到元查询中
上述数组中的示例键“c”值为null,因此它不应出现在元查询中,如wise i有更多的键值对列表,欢迎提供任何帮助,提前感谢。您可以使用带有回调函数的数组过滤器来清除每个为null的数组项,然后将结果数组传递到
$args
数组,然后传递到WP\u QUERY
下面的示例将清理数组,如果它的值为null,请注意我使用了多个参数的'relation'=>'和'
。如果要使用或语句,可以详细检查
function clean_array(&$rows)
{
if (!empty($rows['value'])) {
return $rows;
}
}
$array = array(
array('key' => 'a', 'value' => 'test'),
array('key' => 'b', 'value' => 'test'),
array('key' => 'c', 'value' => ''),
array('key' => 'd', 'value' => ''),
array('key' => 'e', 'value' => ''),
array('key' => 'f', 'value' => ''),
array('key' => 'g', 'value' => ''),
);
$meta_query = array_filter($array, 'clean_array');
echo '<pre>';print_r($meta_query);echo '</pre>';
$args = array(
'post_type' => 'auto',
'meta_query' => array(
'relation' => 'AND',
$meta_query
)
);
$post = new WP_Query($args);
// below line will print query run against your parameters.
echo '<pre>';print_r($post->request);echo '</pre>';
function clean_数组(&$rows)
{
如果(!empty($rows['value'])){
返回$rows;
}
}
$array=array(
数组('key'=>'a','value'=>'test'),
数组('key'=>'b','value'=>'test'),
数组('key'=>'c','value'=>''),
数组('key'=>'d','value'=>''),
数组('key'=>'e','value'=>''),
数组('key'=>'f','value'=>''),
数组('key'=>'g','value'=>''),
);
$meta_query=array_filter($array,'clean_array');
回声';打印(元查询);回声';
$args=数组(
“post_类型”=>“自动”,
“元查询”=>数组(
'关系'=>'和',
$meta_查询
)
);
$post=新的WP\U查询($args);
//下一行将打印针对您的参数运行的查询。
回声';打印($post->request);回声';
如果PHP5.3或更高版本,则使用匿名函数
function filter_meta_query($value)
{
return !empty($value['value']);
}
$args['meta_query'] = array_filter($args['meta_query'],'filter_meta_query');
$args['meta_query'] = array_filter($args['meta_query'],function($value){
return !empty($value['value']);
});