[英]ACF WP_Query Filter by Taxonomy Field
我正在尝试过滤CPT以按分类显示字段,我目前正在使用以下代码:-
$args = array(
'posts_per_page'=> -1,
'post_type' => 'episode',
'order' => 'DESC',
//'meta_key' => $filter_key,
//'meta_value' => $filter,
'tax_query' => array(
array(
'taxonomy' => 'name',
'field' => 'make',
'terms' => array('Jaguar')
)
),
);
但是,这不会返回任何结果。
这就是我要过滤的内容:-
array(3) { [0]=> object(WP_Term)#7336 (10) { ["term_id"]=> int(25) ["name"]=> string(6) "Jaguar" ["slug"]=> string(6) "jaguar" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(25) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } [1]=> object(WP_Term)#7493 (10) { ["term_id"]=> int(24) ["name"]=> string(13) "Mercedes K100" ["slug"]=> string(13) "mercedes-k100" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(24) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } [2]=> object(WP_Term)#7492 (10) { ["term_id"]=> int(26) ["name"]=> string(10) "Porche 911" ["slug"]=> string(10) "porche-911" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(26) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } } array(3) { [0]=> object(WP_Term)#7503 (10) { ["term_id"]=> int(25) ["name"]=> string(6) "Jaguar" ["slug"]=> string(6) "jaguar" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(25) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } [1]=> object(WP_Term)#7490 (10) { ["term_id"]=> int(24) ["name"]=> string(13) "Mercedes K100" ["slug"]=> string(13) "mercedes-k100" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(24) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } [2]=> object(WP_Term)#7489 (10) { ["term_id"]=> int(26) ["name"]=> string(10) "Porche 911" ["slug"]=> string(10) "porche-911" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(26) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(0) ["filter"]=> string(3) "raw" } }
因此,我的分类法字段的名称称为“ make”,出于测试目的,我只想显示所有具有“ Jaguar”分类法的帖子
请指教。
array(
'taxonomy' => 'name',
'field' => 'make',
'terms' => array('Jaguar')
)
是错的。 应该
array(
'taxonomy' => 'post_tag',
'field' => 'name',
'terms' => array('Jaguar')
)
查看有关WP Query分类标准参数的文档,以获取有关其工作原理的信息
编辑:查看您发布的var dump,看来Jaguar是发布标记,而不是称为“ make”的自定义分类法
我设法将其最终排序,@ mrben522是正确的,参数应该如下:
$args = array(
'posts_per_page'=> -1,
'post_type' => 'episode',
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'terms' => array('Jaguar'),
'field' => 'name',
)
),
'order' => 'DESC',
);
但是,仅此一项并不能解决问题。 我还要做的是更改ACF中“分类”字段的选项。 “保存条款”选项设置为“否”,但是将此选项更改为“是”可以使我满意。
如果您在分类法字段中使用“保存条款”设置,则所选条款将被保存为帖子和该条款之间的连接-就像WP核心一样。 这意味着所有代码都可以使用或不使用ACF。
发布此解决方案,因为它可能对其他人有帮助,谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.