【发布时间】:2014-06-02 09:49:47
【问题描述】:
我想为 wp_query 构建一组动态参数,但在执行此操作时遇到了实际问题。采取以下示例代码(确实有效)...
$args = array(
'numberposts' => -1,
'posts_per_page' => -1,
'post_type' => 'skills',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'years',
'value' => 'Primary',
'compare' => 'LIKE'
),
array(
'key' => 'years',
'value' => 'Secondary',
'compare' => 'LIKE'
)
)
);
// get results
$the_query = new WP_Query( $args );
这个想法是,根据用户在表单中输入的结果,我的 meta_query 值中的子句数量会改变。在上面的代码中有两个选项,但可能取决于输入有 3 或另一个时间 5。
我尝试在 $args 外部编译这些内部数组元素。假设在下面的代码中 $inputArray 是字符串元素的一维数组。测试看起来像:
$inputArray=array();
if (is_array($yearsArray)){
foreach( $yearsArray as $year ) {
$inputArray[]=array('key' => 'years','value' => $year,'compare' => 'LIKE');
}
}
// args
$args = array(
'numberposts' => -1,
'posts_per_page' => -1,
'post_type' => 'skills',
'meta_query' => array(
'relation' => 'OR',
$inputArray
)
);
但是查询只是像没有应用任何 meta_query 查询一样运行。
我还尝试使用函数 wp_parse_args 来尝试合并多个元查询,但似乎我正在覆盖该值并且只使用了最后一个。这看起来像这样:
// args
$args = array(
'numberposts' => -1,
'posts_per_page' => -1,
'post_type' => 'skills'
);
$args2 = array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'years',
'value' => 'Secondary',
'compare' => 'LIKE'
)
)
);
$args3 = array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'years',
'value' => 'Primary',
'compare' => 'LIKE'
)
)
);
$args=wp_parse_args($args,$args2,$args3);
如您所见,我尝试了几种不同的方法,但都没有奏效。有人可以帮忙吗?
【问题讨论】:
标签: wordpress