首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了使用WP_Query之外,在使用meta_query时是否有“比较”选项

除了使用WP_Query之外,在使用meta_query时是否有“比较”选项
EN

WordPress Development用户
提问于 2020-12-05 20:08:00
回答 1查看 140关注 0票数 0

我理解comparemeta-query上下文中的使用,但我想知道是否可以通过WP_Querywp_posts表中的另一列执行compare。我第一次写了这篇文章,效果很好:

代码语言:javascript
复制
    $results = $wpdb->get_results( 
        $wpdb->prepare( 
            'SELECT id, post_title, post_name  
             FROM '.$wpdb->prefix.'posts
             WHERE post_type = %s  
             AND post_status = %s
             AND post_title REGEXP "%s"
             ORDER BY post_date ASC',
             'post',
             'publish',
             'Daily Task:'
        )  
    );  

但是在试图让WordPress来做这件事的时候,我想这样做:

代码语言:javascript
复制
    $results = new WP_Query( array (
        'post_type'   => 'post',
        'post_status' => 'publish',
        'orderby'     => 'post_date',
        'relation'    => 'AND',
        array ( 'compare'     => 'LIKE%',
                'post_title'  => 'Daily Task: '
              )
        )
    );

我已经搜索了互联网和法典,我找到的都是meta_query的参考资料。这是因为compareLIKEREGEXP不适用于WP_Query吗?

谢谢!

EN

回答 1

WordPress Development用户

发布于 2020-12-06 10:02:34

我想知道是否可以通过comparewp_posts表中的另一列执行WP_Query

WP_Query中,compare不是直接/顶级参数的一部分,它仅与自定义字段(或post元)和日期查询(即meta_querydate_query中的子句)以及comment_count参数一起使用(默认情况下)。

因此,基本上,答案是“不”,或者不是默认的。

,但它可以使用posts_whereWP_Query.

中的其他钩子实现。

我第一次写这个,效果很好

是的,我想是的。

但是,WP_Query为修改SQL查询提供了各种挂钩,因此您可以使用posts_whereposts_clauses这样的钩子,而不是使用直接SQL查询(使用$wpdb)。

下面是一个基于new WP_Query()调用的示例,它查询标题以特定短语开头的帖子:

代码语言:javascript
复制
add_filter( 'posts_where', 'my_posts_where', 10, 2 );
function my_posts_where( $where, $query ) {
    if ( $value = $query->get( 'custom_param' ) ) {
        global $wpdb;
        $like = $wpdb->esc_like( $value ) . '%';
        $where .= " AND {$wpdb->posts}.post_title LIKE '$like'";
    }

    return $where;
}

// In your template or code:
$query = new WP_Query( array(
    'custom_param' => 'Daily Task:',
    // .. other args
) );

但是,当然,您不必使用该代码,或者如果您认为直接SQL查询在您的情况下更好,那么只需使用它。

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/379380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档