我需要有关WP_Query的帮助。我使用了具有OR和AND关系的meta查询参数,但是在查询结果中似乎忽略了该参数。
这是我的代码:
$args = array(
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'my_custome_post_type',
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array( 'author' => $contact_id ),
array( 'meta_key' => 'my_meta', 'meta_value' => $user_id )
),
array(
'relation' => 'AND',
array( 'author' => $user_id ),
array( 'meta_key' => 'my_meta', 'meta_value' => $contact_id )
)
)
);
$query = new \WP_Query( $args );
$response = $query->posts;
我已经尝试添加here中建议的参数:
'suppress_filters' => false,
'is_your_custom_query' => true, // your custom flag
即使我将$user_id
和$contact_id
的值直接用任何数字替换在查询中,查询仍然返回相同的结果。我不明白为什么它不起作用。
答案 0 :(得分:1)
谢谢您的帮助!
根据 dafoxuk 的建议,我必须将meta_key
替换为key
,并将meta_value
替换为value
。我还必须添加'compare' => 'LIKE'
。
但是在这种情况下,它没有用。我还必须将author_id
存储在post_meta
中,并通过以下方式更改array( 'author'=> $contact_id )
的条件:
array( 'key ' => 'meta_author_id', 'value' => $user_id, 'compare' => 'LIKE' )
因此,最终的$args
数组如下所示:
$args = array(
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'my_custome_post_type',
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array( 'key ' => 'meta_author_id', 'value' => $user_id, 'compare' => 'LIKE' )
array( 'key ' => 'my_meta', 'value' => $user_id, 'compare' => 'LIKE '
array(
'relation' => 'AND',
array( 'key ' => 'meta_author_id', 'value' => $user_id, 'compare' => 'LIKE' )
array( 'key ' => 'my_meta', 'value' => $contact_id, 'compare' => 'LIKE' )
)
);