Creating Custom Query

时间:2012-06-24 作者:Ty Morton

我在这里碰到了某种绊脚石,我找不到克服它的方法。

我正在尝试创建一个自定义的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\'
        )
    )
);
$query = new WP_Query( $args );
我没有得到任何结果。事实上,如果包括echo "$args";, 我得到的只是“数组”这个词我也只希望它返回特定类别的结果。

我肯定我忽略了一些简单的事情。有人能帮忙吗?

谢谢

3 个回复
最合适的回答,由SO网友:Samiul Amin Shanto 整理而成

尝试以下代码:

    $country_search_array = array();
    while($row = mysql_fetch_array($regionresult)){
        $country_search_array[] = $row[\'country\']; // Your country field name
    }
    $country_search = "\'".implode("\',", $country_search_array)."\'";

$args = array(
        \'posts_per_page\' => -1,
        \'meta_query\' => array(
            array(
                \'key\' => \'Country\',
                \'value\' => $country_search,
                \'compare\' => \'IN\'
            )
        )
    );
    $query = new WP_Query( $args );

SO网友:Milo

你通过了\'$country_search\' 作为文本值,它应该是

\'value\' => $country_search
没有单引号。

此外,我建议将那些旧的mysql查询函数替换为wpdb.

SO网友:Ty Morton

问题是有两个数组对象:

$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 );
应该是这样的:

$country_search = array(mysql_fetch_array($regionresult));
$args = array(
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
            \'key\' => \'Country\',
            \'value\' => \'$country_search\',
            \'compare\' => \'IN\',
            \'category\' => \'Gallery\'
    )
);
$query = new WP_Query( $args );

结束

相关推荐

Output from Meta Box Array

我已经创建了一个元框,它成功地存储了post数据,但我在输出内容并以合理的方式显示它时遇到了困难,这超出了我对PHP的有限知识。我是一个养蜂人,我想记录我的蜂箱的检查情况,所以每个蜂箱都有一个记录,其中包含一定数量的字段。因此,我想遍历所有配置单元的colony数组,即直到$hive为空,然后以每个配置单元有一行的表的形式输出数据。目前,我已经成功地手动生成了表的第一行,但不知道如何设置一个循环来完成这项工作。<?php if (have_posts() ):?>