【问题标题】:Wordpress - WP Query : meta_query relation ignoredWordpress - WP Query:meta_query 关系被忽略
【发布时间】:2019-06-03 15:39:52
【问题描述】:

我需要 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;

我已经尝试按照here 中的建议添加此参数:

'suppress_filters'     => false,
'is_your_custom_query' => true, // your custom flag

即使我将查询中的$user_id$contact_id 的值直接替换为任意数字,查询仍然返回相同的结果。我不明白为什么它不起作用。

【问题讨论】:

  • 您能否详细说明您想要实现的目标以及您目前获得的结果。这将有助于理解场景。
  • 我想获得帖子中的最后一个帖子:1) 与 $user_id 相同的作者 ID 并且 post_meta 'meta_value' 等于 $contact_id 2) 或相同的作者 ID比 $contact_id 和 post_meta 'meta_value' 等于 $user_id
  • 逻辑对我来说看起来不错..您是否尝试修复输入错误,'my_custom_post_type" new \WP_Query 或任何其他(如果存在)??
  • 我认为将meta_key 更改为key 并将meta_value 更改为value 很简单。这也让我绊倒了几次。基本上,当对 meta_query 使用数组语法时,您删除 meta_ 前缀

标签: wordpress arguments meta-query


【解决方案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' )
                    )
        );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多