gpt4 book ai didi

php - WordPress 在 get_posts 中使用通配符

转载 作者:行者123 更新时间:2023-12-02 17:18:57 25 4
gpt4 key购买 nike

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

我已经在 SQL 中进行了我想要的查询:

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 中的内置 get_posts() 函数来做到这一点:

get_posts(array('meta_key' => 'additional_downloads%', 'meta_value' => 81))

但这给了我 0 个结果。我需要这个通配符的原因是因为一个帖子可以有超过 1 个额外下载,并且这些下载存储在 wp_postmeta 表中,其中包含元键“additional_downloads_0”、“additional_downloads_1”等

知道如何使用 WordPress 函数来做到这一点吗?

最佳答案

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

过滤器

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 );

查询

$args = [
'suppress_filters' => false,
'wildcard_on_key' => true,
'meta_query' = [
[
'key' => 'additional_downloads_%',
'value' => 81
]
]
];
$q = get_posts( $args );

关于php - WordPress 在 get_posts 中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35310109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com