在 wordpress 中使用 meta_query 和默认字段
Work with meta_query and default field in wordpress
我会知道如何使用 WP_query
class 在 meta_query
字段和 default field
之间添加关系 OR
或 AND
.
$args = [
'numberposts' => -1,
'post_type' => 'post',
'category_name' => 'job-offers',
'meta_query' => [
[
'key' => 'region',
'value' => $infos['region'],
'compare' => '='
]
],
'post_title' => $infos['title'],
];
在这里我会在 post_title
和 meta_query
之间建立 OR
关系。
提前谢谢你。
编辑
$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
密钥不会改变任何内容。
meta_query
和 relation
值仅影响数据库中 postmeta
table 中的数据。因此,您不能在 postmeta
中的元键 (region
) 和 posts
中的 post_title
之间执行元 OR
关系查询 table.
解决方法是添加一个过滤器,将 post_title
镜像到 postmeta
table 中,以便在 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
table 中应该有一个具有键 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' => '=='
)
)
));
我会知道如何使用 WP_query
class 在 meta_query
字段和 default field
之间添加关系 OR
或 AND
.
$args = [
'numberposts' => -1,
'post_type' => 'post',
'category_name' => 'job-offers',
'meta_query' => [
[
'key' => 'region',
'value' => $infos['region'],
'compare' => '='
]
],
'post_title' => $infos['title'],
];
在这里我会在 post_title
和 meta_query
之间建立 OR
关系。
提前谢谢你。
编辑
$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
密钥不会改变任何内容。
meta_query
和 relation
值仅影响数据库中 postmeta
table 中的数据。因此,您不能在 postmeta
中的元键 (region
) 和 posts
中的 post_title
之间执行元 OR
关系查询 table.
解决方法是添加一个过滤器,将 post_title
镜像到 postmeta
table 中,以便在 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
table 中应该有一个具有键 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' => '=='
)
)
));