Wordpress - WP 查询:meta_query 关系被忽略
Wordpress - WP Query : meta_query relation ignored
我需要 WP_Query 方面的帮助。我使用使用 OR 和 AND 关系的元查询参数,但是这个参数在查询结果中似乎被忽略了。
这是我的代码:
$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;
我已经尝试按照 :
中的建议添加此参数
'suppress_filters' => false,
'is_your_custom_query' => true, // your custom flag
即使我直接在查询中用任何数字替换 $user_id
和 $contact_id
的值,查询仍然 return 相同的结果。我不明白为什么它不起作用。
感谢您的帮助!
根据 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' )
)
);
我需要 WP_Query 方面的帮助。我使用使用 OR 和 AND 关系的元查询参数,但是这个参数在查询结果中似乎被忽略了。
这是我的代码:
$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;
我已经尝试按照
'suppress_filters' => false,
'is_your_custom_query' => true, // your custom flag
即使我直接在查询中用任何数字替换 $user_id
和 $contact_id
的值,查询仍然 return 相同的结果。我不明白为什么它不起作用。
感谢您的帮助!
根据 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' )
)
);