我在这里遇到了某种绊脚石,但我找不到克服它的方法。
我正在尝试制作一个自定义 WP 查询,按原籍国搜索帖子,一次选择多个国家/地区。
我有一个将国家/地区映射到区域的表,因此初始查询将搜索所选区域,并以数组形式返回该区域中的所有国家/地区。例如,如果您选择非洲,它将返回非洲境内的一系列国家/地区。
if(!empty($_REQUEST['region'])){
$region = $_REQUEST['region'];
$regionresult = mysql_query("SELECT * FROM gallery_regions WHERE region='$region'") or die(mysql_error());
$num_rows = mysql_num_rows($regionresult);
if (!$regionresult) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
} else {
$region = NULL;
}
那部分有效。
现在,我想使用返回的数组来搜索我的 WP 帖子,以查找来自数组中任何国家/地区的帖子。这是我无法开始工作的部分:
$country_search = array(mysql_fetch_array($regionresult));
$args = array(
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'Country',
'value' => '$country_search',
'compare' => 'IN',
'category' => 'Gallery'
)
)
);
$query = new WP_Query( $args );
我没有得到任何结果。事实上,如果包含 echo "$args";
,我得到的只是单词“Array”。我也只希望它返回特定类别的结果。
我确信我忽略了一些简单的事情。有人可以帮忙吗?
谢谢!
我
最佳答案
我认为问题是有两个数组对象,并且是这样的:
$country_search = array(mysql_fetch_array($regionresult));
$args = array(
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'Country',
'value' => '$country_search',
'compare' => 'IN',
)
)
);
$query = new WP_Query( $args );
应该是这样的:
$country_search = array(mysql_fetch_array($regionresult));
$args = array(
'posts_per_page' => -1,
'meta_query' => array(
'key' => 'Country',
'value' => $country_search,
'compare' => 'IN',
)
);
$query = new WP_Query( $args );
但是,它没有返回任何帖子,而是返回了所有帖子。发牢骚!
事实证明这是多个问题的结合:
- 与其让
$country_search_array
内爆,不如 按原样添加到查询中。 - 由于它是一个数组,因此我们不能使用
'='
作为比较值。它需要是'IN'
如果没有在这里获得的帮助,我无法弄清楚这一点。再次感谢!
关于php - 创建自定义 WP 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11179645/