首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WordPress在get_posts中使用通配符

WordPress在get_posts中使用通配符
EN

Stack Overflow用户
提问于 2016-02-10 08:29:18
回答 1查看 1.2K关注 0票数 3

在get_posts()函数中可以使用通配符吗?

我已经在SQL中完成了我想要的查询:

代码语言:javascript
运行
复制
select * from wp_posts p
left join wp_postmeta pm on p.id = pm.post_id
where pm.meta_key like 'additional_downloads%' and pm.meta_value = 81 and p.post_status = "publish"

这给了我我想要的结果。

然后,我尝试使用WordPress中内置的WordPress()函数来实现这一点:

代码语言:javascript
运行
复制
get_posts(array('meta_key' => 'additional_downloads%', 'meta_value' => 81))

但这给了我0的结果。我需要这个通配符的原因是,一个帖子可以有超过一个额外的下载,并且这些下载存储在wp_postmeta表中,其中包含了meta_keys‘meta_keys_additional_downloads_1_0’、'additional_downloads_1‘等等。

你知道如何使用wordpress函数来完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 09:05:22

我们可以过滤查询的WHERE子句。

滤器

代码语言:javascript
运行
复制
add_filter( 'posts_where', function ( $where, \WP_Query $q )
{ 
    // Check for our custom query var
    if ( true !== $q->get( 'wildcard_on_key' ) )
        return $where;

    // Lets filter the clause
    $where = str_replace( 'meta_key =', 'meta_key LIKE', $where );

    return $where;
}, 10, 2 );

查询

代码语言:javascript
运行
复制
$args = [
    'suppress_filters' => false,
    'wildcard_on_key' => true,
    'meta_query' = [
        [
            'key' => 'additional_downloads_%',
            'value' => 81
        ]
    ]
];
$q = get_posts( $args );
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35310109

复制
相关文章

相似问题

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