0

我在这里遇到了某种绊脚石,我无法找到解决办法。

我正在尝试制作一个自定义 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 );

我没有得到任何结果。事实上,如果 include echo "$args";,我得到的只是“数组”这个词。我也只希望它返回特定类别的结果。

我确定我忽略了一些简单的事情。任何人都可以帮忙吗?

谢谢!

4

2 回答 2

1

我认为问题在于有两个数组对象,并且:

$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 );

但是,它没有返回任何帖子,而是返回了所有帖子。叽!

原来是一个问题的组合:

  1. 而不是内爆$country_search_array,它需要按原样添加到查询中。
  2. 由于它是一个数组,我们不能使用'='比较值。它需要是'IN'

如果没有我在这里得到的帮助,我无法弄清楚。再次,谢谢!

于 2012-06-24T19:09:53.240 回答
0

你有没有尝试过

'value' => $country_search,

代替

'value' => '$country_search',

没有引号?

于 2012-06-24T17:45:08.517 回答