WP Query如何筛选自定义字段含指定Person分类术语的Book文章
解决方案
要实现查询所有published自定义字段包含term_id 10的book文章,正确的WP_Query参数写法如下:
$args = [ 'posts_per_page' => -1, 'post_type' => 'book', 'order' => 'DESC', 'orderby' => 'date', 'meta_query' => [ [ 'key' => 'published', 'value' => '"10"', // 带引号避免误匹配类似100的term_id 'compare' => 'LIKE', ] ] ]; $query = new WP_Query($args);
你的两种写法无效原因
第一种写法错误:
tax_query里指定的taxonomy是published,但published并非你创建的分类法,实际分类法是person。更核心的问题是,published是存储在post meta中的自定义字段,不是直接将文章与person分类术语关联,所以tax_query无法识别这种存储逻辑,最终返回所有book文章。第二种写法错误:
compare => 'IN'的逻辑是检查meta值是否等于数组中的某一项,但多选分类字段存储的是序列化后的数组(格式类似a:2:{i:0;s:2:"10";i:1;s:2:"11";}),不是单个term_id或普通数组。IN只会匹配meta值恰好等于10的文章,无法覆盖包含10同时存在其他term_id的情况。
内容的提问来源于stack exchange,提问作者towelie
相关产品推荐
相关产品推荐

