Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建自定义WP查询_Php_Mysql_Wordpress - Fatal编程技术网

Php 创建自定义WP查询

Php 创建自定义WP查询,php,mysql,wordpress,Php,Mysql,Wordpress,我在这里碰到了某种绊脚石,我找不到路过去 我正在尝试创建一个自定义的WP查询,它可以按原籍国搜索帖子,同时选择多个国家 我有一个将国家映射到地区的表,因此初始查询将搜索所选地区,并以数组形式返回该地区的所有国家。例如,如果选择非洲,它将返回非洲境内的一系列国家 if(!empty($_REQUEST['region'])){ $region = $_REQUEST['region']; $regionresult = mysql_query("SELECT * FROM ga

我在这里碰到了某种绊脚石,我找不到路过去

我正在尝试创建一个自定义的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”,我得到的只是单词“Array”。我也只希望它返回特定类别的结果

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

谢谢

你试过了吗

'value' => $country_search,
而不是

'value' => '$country_search',

没有引号?

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

$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\u search\u数组
    ,还需要 按原样添加到查询中
  • 由于它是一个数组,我们不能使用
    '='
    作为比较值。它必须是
    'IN'

  • 如果没有我在这里得到的帮助,我是不可能弄明白的。再次感谢

    您是否尝试过使用
    print\r($args)
    而不是
    echo$args
    ?返回以下内容:“数组([posts\u per\u page]=>-1[meta\u query]=>数组([0]=>数组([key]=>Country[value]=>$Country\u search[compare]=>IN))”
    'value'=>'$country\u search'
    应该是不带引号的
    'value'=>$country\u search
    。这会产生以下结果:
    数组([posts\u per\u page]=-1[meta\u query]=Array([meta\u key]=country[meta\u value]=Array([0]=Array([0]=4[id]=4[1]=阿尔及利亚[国家]=阿尔及利亚[2]=AF[地区]=AF))[compare]=IN])
    尝试打印($country\u search)
    查看阵列。是的,我一直在来回切换。我现在就在这里: