我将查询字符串中的值作为数组收集。然后收集这些值并将它们放入' meta_query'。
的值我无法从WP_Query输出任何内容。我觉得'meta_query'中的第二个数组有问题。
我尝试将比较更改为' LIKE',并显示所有内容而不是查询中的内容。
查询字符串:
?variable[]=value1&variable[]=value2
PHP代码:
<?php
$variable_selected = $_GET['variable'];
$filter = array(
'post_type' => 'my_custom_post_type',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'my_post_field',
'value' => $variable_selected,
'compare' => 'IN'
)
)
);
$posts = new WP_Query( $filter );
对此的任何帮助都会很棒。
答案 0 :(得分:0)
我首先在$ variable_selected上运行一个var_dump,以确保获得所需的数组。此外,由于您只使用一个元键/值字段,因此您可能不需要查询中的OR,因此您可以执行以下操作。希望有所帮助。
<?php
$variable_selected = $_GET['variable'];
// Use the var_dump to test to see if array is being pulled in properly.
var_dump ( $variable_selected );
$filter = array(
'post_type' => 'my_custom_post_type',
'meta_query' => array(
array(
'key' => 'my_post_field',
'value' => $variable_selected,
'compare' => 'IN'
)
)
);
$posts = new WP_Query( $filter );
答案 1 :(得分:0)
这使得meta_query动态,具体取决于查询字符串中的值。
$meta_query = array();
if ( ! empty( $_GET["variable"] ) ) {
if ( is_array( $_GET["variable"] ) ) {
$meta_query['relation'] = 'OR';
foreach ( $_GET["variable"] as $value ) {
$meta_query[] = array(
'key' => 'my_post_field',
'value' => sanitize_text_field( (string) $value ),
'compare' => 'LIKE'
);
}
} else {
$meta_query = array(
'key' => 'my_post_field',
'value' => sanitize_text_field( (string) $_GET["variable"] ),
'compare' => '='
);
}
}
$filter = array(
'post_type' => 'my_custom_post_type',
'meta_query' => array(
'relation' => 'OR',
$meta_query
)
);
$posts = new WP_Query( $filter );