WordPress基于ACF分类法字段查询分类的代码问题排查
代码错误说明
你的写法完全用错了查询参数,核心问题有两个:
tax_query的作用是查询关联了指定分类项的文章/自定义post类型,根本不支持用来查询分类项(term)本身。- 你给category创建的ACF taxonomy类型字段
custom_parent,本质是存储在term meta表里的分类元数据,不是WordPress原生的分类法归属关系,没法通过分类法参数匹配。
ACF的taxonomy类型单选字段,数据库里存的值是所关联分类项的ID,不是slug,不能直接拿slug做匹配条件,查询分类项的元数据要使用meta_query参数。
可直接运行的修正代码
// 先根据slug拿到目标二次归类项的ID,注意第二个参数替换成custom_parent字段绑定的分类法名 // 如果custom_parent关联的是默认分类目录就填'category',关联自定义分类法就填对应分类法标识 $target_term = get_term_by('slug', 'sport-fritid-parent', 'category'); $target_term_id = $target_term ? $target_term->term_id : 0; $args = array( 'taxonomy' => 'category', 'hide_empty' => false, // 不需要显示无文章的分类可以改成true 'meta_query' => array( array( 'key' => 'custom_parent', 'value' => $target_term_id, 'compare' => '=' ) ) ); $categories = get_categories($args); foreach($categories as $cat){ echo $cat->name; }
补充说明
如果你给custom_parent字段开了多选功能,ACF会把多选的ID存为序列化数组,这时候需要把meta_query里的compare参数改成LIKE,value值改成'"' . $target_term_id . '"'做模糊匹配即可。
内容的提问来源于stack exchange,提问作者Fernando Redondo
相关产品推荐
相关产品推荐

