如何在WordPress中用get_posts查询含指定字符串的元数据键?
解决方案:通过meta_query匹配以特定字符串开头的元键
WordPress的meta_query支持通过模糊匹配或正则表达式筛选元键符合特定模式的文章,针对你需要筛选元键以_cegg_data开头的产品文章,有两种可行写法:
方法1:用正则表达式精准匹配前缀
这种方式能确保只命中以_cegg_data开头的元键,避免误匹配包含该字符串但不在开头的键:
$args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => '_cegg_data', 'compare' => 'REGEXP', 'value' => '^_cegg_data', // 正则规则:匹配以_cegg_data开头的元键 'type' => 'CHAR' // 指定字段类型,优化数据库查询效率 ) ) ); $postslist = get_posts( $args );
方法2:用LIKE模糊匹配
这种写法更简洁,通过通配符%匹配所有以_cegg_data开头的元键:
$args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => '_cegg_data%', 'compare' => 'LIKE' ) ) ); $postslist = get_posts( $args );
补充说明
- 两种写法都会返回所有带有目标前缀元键的文章,无论元值是什么内容
- 若需要额外筛选元值非空的文章,可在
meta_query的数组中添加'value' => ''和'compare' => '!='参数 - 确保你的WordPress版本在3.1及以上(该版本开始支持这类
compare参数)
内容的提问来源于stack exchange,提问作者Rasmus
相关产品推荐
相关产品推荐

