WordPress中如何筛选同时满足genre和quality双条件的自定义分类术语?
解决方法
首先需要明确:genre和quality是两个独立的自定义分类法,一个分类术语不可能同时隶属于两个不同的分类法。结合你的描述,你的需求大概率是筛选出同时被标记为genre=action和quality=HD的movie自定义文章,再提取这些文章关联的分类术语,或是直接获取这两个特定分类术语并组合展示。下面分两种场景说明:
场景1:获取符合双分类条件的文章,提取关联的分类术语
使用WP_Query查询同时满足两个分类条件的movie文章,再遍历文章提取所有关联的分类术语(自动去重):
// 构建查询参数:筛选同时属于genre=action和quality=HD的movie文章 $args = array( 'post_type' => 'movie', 'posts_per_page' => -1, // 获取所有符合条件的文章 'tax_query' => array( 'relation' => 'AND', // 两个分类条件必须同时满足 array( 'taxonomy' => 'genre', 'field' => 'slug', // 可根据实际情况改为name或term_id 'terms' => 'action', ), array( 'taxonomy' => 'quality', 'field' => 'slug', 'terms' => 'HD', ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { $all_terms = array(); // 存储所有关联术语,避免重复 while ($query->have_posts()) { $query->the_post(); // 获取当前文章的genre分类术语 $genre_terms = get_the_terms(get_the_ID(), 'genre'); if ($genre_terms && !is_wp_error($genre_terms)) { foreach ($genre_terms as $term) { $all_terms[$term->term_id] = $term; } } // 获取当前文章的quality分类术语 $quality_terms = get_the_terms(get_the_ID(), 'quality'); if ($quality_terms && !is_wp_error($quality_terms)) { foreach ($quality_terms as $term) { $all_terms[$term->term_id] = $term; } } } wp_reset_postdata(); // 重置查询状态 // 输出所有分类术语名称 foreach ($all_terms as $term) { echo $term->name . '<br>'; } } else { echo '未找到符合条件的文章'; }
场景2:直接获取action和HD两个特定分类术语
如果你只是需要这两个指定的分类术语,可分别调用get_terms获取后合并:
// 获取genre分类下的action术语 $action_terms = get_terms(array( 'taxonomy' => 'genre', 'slug' => 'action', 'hide_empty' => false, )); // 获取quality分类下的HD术语 $hd_terms = get_terms(array( 'taxonomy' => 'quality', 'slug' => 'HD', 'hide_empty' => false, )); // 合并两个术语数组 $combined_terms = array_merge($action_terms, $hd_terms); // 输出术语名称 foreach ($combined_terms as $term) { echo $term->name . '<br>'; }
纠正你当前代码的错误
你当前的get_terms参数写法不符合WordPress规范,get_terms没有'genre' => 'action'这种参数用法。正确写法需要先指定分类法taxonomy,再用slug/name/term_id筛选特定术语:
// 正确获取genre分类下的action术语 $terms = get_terms(array( 'taxonomy' => 'genre', 'slug' => 'action', 'hide_empty' => false, ));
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

