Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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
Wordpress 使用meta_query(WP)同时将字段与多个值进行比较_Wordpress_Custom Post Type - Fatal编程技术网

Wordpress 使用meta_query(WP)同时将字段与多个值进行比较

Wordpress 使用meta_query(WP)同时将字段与多个值进行比较,wordpress,custom-post-type,Wordpress,Custom Post Type,我正在将我的tripCPT的trip\u region自定义字段与数组的第一个元素进行比较:$filter\u region[0] 然而,我可能在该数组中有更多元素,我需要选择trips,其trip\u region字段等于这些元素中的任何一个。使用meta_query,是否可以(使用OR而不是AND)一次将一个字段与多个值进行比较?因为世界上没有这样的东西 编辑: 这是我的新代码,可能更接近解决方案,但不会返回任何结果: $get_trips_region = get_posts(array(

我正在将我的
trip
CPT的
trip\u region
自定义字段与数组的第一个元素进行比较:
$filter\u region[0]

然而,我可能在该数组中有更多元素,我需要选择
trips
,其
trip\u region
字段等于这些元素中的任何一个。使用
meta_query
,是否可以(使用OR而不是AND)一次将一个字段与多个值进行比较?因为世界上没有这样的东西

编辑:

这是我的新代码,可能更接近解决方案,但不会返回任何结果:

$get_trips_region = get_posts(array(
    'post_type' => 'trip',
    'meta_query' => array(
        array(
            'key' => 'trip_region', 
            'value' => $filter_region, 
            'compare' => 'IN'
        )
    )
));
编辑(2):

用WP_Query替换get_posts并使用WP_Query的request属性,我看到以下SQL查询正在这里执行:

SELECT SQL_CALC_FOUND_ROWS wp_15_posts.ID FROM wp_15_posts INNER JOIN wp_15_postmeta ON (wp_15_posts.ID = wp_15_postmeta.post_id) WHERE 1=1 AND wp_15_posts.post_type = 'trip' AND (wp_15_posts.post_status = 'publish' OR wp_15_posts.post_status = 'private') AND ( (wp_15_postmeta.meta_key = 'trip_region' AND CAST(wp_15_postmeta.meta_value AS CHAR) IN ('47','46','45')) ) GROUP BY wp_15_posts.ID ORDER BY wp_15_posts.post_date DESC LIMIT 0, 10
我猜相关的段落是:
(wp_15_postmeta.meta_key='trip_region'和CAST(wp_15_postmeta.meta_值为CHAR)在('47','46','45'))


看起来不错,我不明白为什么它不起作用。

我认为你必须在中与进行比较,而不是像那样与进行比较。
必须包含一个数组<医生

$filter_region = array( 'Region 1', 'Region 2' );

$get_trips_region = get_posts(array(
    'post_type' => 'trip',
    'meta_query' => array(
        array(
            'key' => 'trip_region', 
            'value' => $filter_region, 
            'compare' => 'IN'
        )
    )
));

你可以使用compare。这里是另一个WordPress Codex文档

谢谢,但不管数组中是否有一个、两个或多个元素,它现在都不会返回任何帖子。请参阅已编辑的问题。我建议您检查由WP生成的SQL查询。也许查询已经可以通过简单的
var\u dump($get\u trips\u region)
看到了。否则,您可以用
新的WP\u查询(…)
替换
获取帖子(…)
,并编写
$get\u trips\u region->request
,如前所述。抱歉,我不明白为什么它不起作用。到目前为止,我觉得一切都很好。我怀疑问题与“trip_region”字段是使用高级自定义字段插件创建的“relationship”字段有关。
$filter_region = array( 'Region 1', 'Region 2' );

$get_trips_region = get_posts(array(
    'post_type' => 'trip',
    'meta_query' => array(
        array(
            'key' => 'trip_region', 
            'value' => $filter_region, 
            'compare' => 'IN'
        )
    )
));