【问题标题】:Wordpress meta_query to compare 3 meta value with same meta keyWordpress meta_query 将 3 个元值与相同的元键进行比较
【发布时间】:2023-04-01 19:39:01
【问题描述】:

我想获取所有包含 meta_value Book、Study、Art 的帖子。但是当我将 3 数组放在 meta_query 系统上时不会返回任何内容,但是如果我将 2 数组放在网上就可以了

// this working
     $args = array(
    'numberposts' => 10,
    'post_type' => 'content',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'media_type',
            'value' => 'Book',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'media_type',
            'value' => 'Study',
            'compare' => 'LIKE'
        )       
    )
);


//this now working
 $args = array(
    'numberposts' => 10,
    'post_type' => 'content',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'media_type',
            'value' => 'Book',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'media_type',
            'value' => 'Study',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'media_type',
            'value' => 'Art',
            'compare' => 'LIKE'
        )
    )
);

【问题讨论】:

    标签: wordpress plugins


    【解决方案1】:

    听起来您正在搜索确切的元值,所以您尝试了吗:

    $args = array(
         'posts_per_page' => 10,
         'post_type'      => 'content',
         'meta_query'     => array(
                array(
                    'key'     => 'media_type',
                    'value'   => array( 'Art', 'Book','Study' ),
                    'compare' => 'IN'
                ),
          ),
    );
    

    作为您的查询参数?

    旁注:参数numberposts 有效,但posts_per_page 现在更常用于WP_Query()

    【讨论】:

    • 此解决方案返回 null Array()
    • 奇怪,我猜是其他原因导致了这个问题。任何额外的pre_get_posts 过滤器?可以分享一下相关的SQL查询吗?你可以从:$q = WP_Query( $args ); echo $q->request;
    • 是的,我现在不知道为什么不工作.. 所以我的相关 SQL 查询->> SELECT SQL_CALC_FOUND_ROWS wpnew_posts.ID FROM wpnew_posts INNER JOIN wpnew_postmeta ON (wpnew_posts.ID = wpnew_postmeta.post_id) WHERE 1=1 AND wpnew_posts.post_type = 'content' AND (wpnew_posts.post_status = 'publish' OR wpnew_posts.post_status = 'private') AND ((wpnew_postmeta.meta_key = 'media_type' AND CAST(wpnew_postmeta.meta_value AS CHAR) IN ( 'Art','Book','Study')) ) GROUP BY wpnew_posts.ID ORDER BY wpnew_posts.post_date DESC LIMIT 0, 10
    • 这看起来很正常。所以这个$q = WP_Query( $args ); echo $q->found_posts; 正在返回0?这些自定义帖子是否已发布?很抱歉问这个问题,但帖子类型真的是content(只是想确定一下)吗?如何添加自定义字段?
    • 我有 775 个内容帖子类型的帖子,并且已发布 787 个。 $q = WP_Query($args); echo $q->found_posts 返回 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多