我在比较trip_region
我的自定义字段trip
CPT到数组的第一个元素:$filter_region[0]
.
但是,该数组中可能有更多元素,我需要选择trips
谁的trip_region
字段等于这些元素中的任何一个。是否可以使用meta\\u查询(使用OR,而不是AND)一次将字段与多个值进行比较?因为这里没有这样的东西the doc.
$get_trips_region = get_posts(array(
\'post_type\' => \'trip\',
\'meta_query\' => array(
array(
\'key\' => \'trip_region\',
\'value\' => \'"\' . $filter_region[0] . \'"\',
\'compare\' => \'LIKE\'
)
)
));
编辑:这是我的新代码,可能更接近解决方案,但没有返回任何结果:
$get_trips_region = get_posts(array(
\'post_type\' => \'trip\',
\'meta_query\' => array(
array(
\'key\' => \'trip_region\',
\'value\' => array($filter_region[0], $filter_region[1]),
\'compare\' => \'IN\'
)
)
));
编辑(2):将get\\u posts替换为WP\\u Query,并使用WP\\u 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\' AND CAST(wp_15_postmeta.meta_value AS CHAR) IN (\'47\',\'46\',\'45\'))
看起来不错,我不明白为什么它不起作用。与工作版本相同的段落:LIKE \'%\\"45\\"%\'