
本教程详细阐述了如何在wordpress中,当按自定义分类法(如作品集类别)过滤或展示自定义文章类型时,同时显示该分类法的描述。核心方法是首先遍历所有分类法术语,然后针对每个术语执行一个独立的wp_query来获取相关文章,从而在显示文章列表的同时,展示对应分类的详细描述信息。
在WordPress开发中,我们经常会创建自定义文章类型(Custom Post Types, CPT)并为其关联自定义分类法(Custom Taxonomies)。一个常见的需求是,当用户浏览或过滤特定分类下的文章时,不仅要显示该分类下的文章列表,还需要同时展示该分类法的描述信息,以提供更丰富的上下文。本文将详细介绍如何通过遍历分类法术语并结合WP_Query来实现这一功能。
核心策略:术语驱动的文章查询
要实现为每个分类显示其描述以及该分类下的文章,最直接且有效的方法是采用“术语驱动的查询”策略。这意味着我们将不再仅仅查询文章,而是首先获取所有目标分类法中的术语(term),然后针对每一个术语,执行一个独立的WordPress查询(WP_Query)来获取与其关联的自定义文章。这种方法确保了在显示文章之前,我们已经拥有了当前术语的所有详细信息,包括其描述。
实现步骤
以下是实现此功能的具体步骤:
1. 获取所有目标分类法术语
首先,我们需要使用 get_terms() 函数来获取特定自定义分类法下的所有术语。这个函数返回一个包含所有术语对象的数组,每个对象都包含了术语的名称、描述、slug等信息。
true // 只获取有文章关联的术语
));
// 检查是否成功获取到术语且没有WordPress错误
if (!is_wp_error($terms) && !empty($terms)) :
// 后续步骤将在循环内部进行
else :
echo '未找到任何分类术语或发生错误。
';
endif;
?>2. 遍历术语并执行文章查询
获取到术语列表后,我们需要遍历这些术语。在每次循环中,我们将:
- 显示当前术语的名称和描述。
- 构建一个 WP_Query 参数数组,其中包含 tax_query 参数,用于根据当前术语的ID来过滤文章。
- 执行 WP_Query 来获取与当前术语关联的自定义文章。
- 遍历查询结果,显示每篇文章的标题或其他所需信息。
- 在每次内部文章循环结束后,调用 wp_reset_postdata() 重置全局文章数据,以避免对后续查询产生影响。
name); ?>
description)) : ?>
description); ?>
'your_custom_post_type', // 替换为你的自定义文章类型 slug
'post_status' => 'publish',
'posts_per_page' => -1, // 显示所有文章
'tax_query' => [
[
'taxonomy' => $taxonomy_slug,
'field' => 'term_id',
'terms' => $term->term_id,
],
],
];
$query = new WP_Query($args);
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
// 显示每篇文章的标题、链接等信息
?>
此分类下暂无文章。
';
endif;
?>










