我知道如何使用OR
类在AND
字段与meta_query
之间添加关系default field
或WP_query
。
$args = [
'numberposts' => -1,
'post_type' => 'post',
'category_name' => 'job-offers',
'meta_query' => [
[
'key' => 'region',
'value' => $infos['region'],
'compare' => '='
]
],
'post_title' => $infos['title'],
];
我在OR
和post_title
之间会有一个meta_query
关系。
提前谢谢。
修改
$args = [
'numberposts' => -1,
'post_type' => 'post',
'category_name' => 'job-offers',
'meta_query' => [
[
'key' => 'region',
'value' => $infos['region'],
'compare' => '='
]
],
'post_title' => $infos['title'],
'relation' => 'OR',
];
添加relation
密钥不会改变任何内容。
答案 0 :(得分:3)
meta_query
和relation
值仅影响数据库中postmeta
表中的数据。因此,您无法在OR
中的元键(region
)与postmeta
表中的post_title
之间进行元posts
关系查询
解决方法是添加一个过滤器,将post_title
镜像到postmeta
表中,以便在meta_query
中使用。
add_action( 'save_post', function( $post_id ) {
if ( $post_id && get_post_type( $post_id ) == 'post' ) {
update_post_meta( $post_id, 'posts_title', get_the_title( $post_id ) );
}
});
// This is a very light implementation. Be sure to do some
// checks in order to save the meta value only when really
// needed. This implementation might save it for auto-drafts
// and such.
现在postmeta
表中应该有一个具有键posts_title
的值。然后在WP_Query
你可以做
$posts = new WP_Query( array(
'post_type' => 'post',
'category_name' => 'job-offers',
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'posts_title',
'value' => $wanted_title_value,
'compare' => '=='
),
array(
'key' => 'region',
'value' => $wanted_region_value,
'compare' => '=='
)
)
));