在 WordPress 中输出多层级分类(嵌套的分类)可以通过以下方法实现,这些方法包括使用自带的函数、直接查询数据库,以及使用自定义的代码来递归输出嵌套分类。1. 使用 wp_list_catego...
在 WordPress 中输出多层级分类(嵌套的分类)可以通过以下方法实现,这些方法包括使用自带的函数、直接查询数据库,以及使用自定义的代码来递归输出嵌套分类。
1. 使用 wp_list_categories
wp_list_categories 函数可以方便地输出分类列表,并支持多层级嵌套显示。
示例代码:
<ul>
<?php
wp_list_categories([
'orderby' => 'name',
'show_count' => true,
'hierarchical' => true,
'title_li' => '', // 如果需要标题,可以填写标题名称
]);
?>
</ul>关键参数:
orderby:定义分类排序方式,'name' 按名称排序。
show_count:是否显示每个分类中的文章数量,true 为显示。
hierarchical:是否显示层级结构,true 为显示嵌套分类。
title_li:列表标题,如果不需要标题,可以设置为空字符串。
2. 使用 get_categories 和递归函数
如果你需要更多自定义输出,可以使用 get_categories 函数获取分类,然后使用递归函数生成嵌套列表。
示例代码:
<?php
function display_categories($parent = 0, $level = 0) {
$args = [
'parent' => $parent,
'hide_empty' => false,
];
$categories = get_categories($args);
if ($categories) {
echo '<ul>';
foreach ($categories as $category) {
echo '<li>';
echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>';
display_categories($category->term_id, $level + 1);
echo '</li>';
}
echo '</ul>';
}
}
// 在模板中调用该函数
display_categories();
?>关键部分:
get_categories:获取指定父分类下的子分类。
display_categories:递归函数,通过 parent 参数逐级获取子分类。
3. 使用 wp_nav_menu 生成分类菜单
如果你将分类注册为导航菜单,wp_nav_menu 可以方便地生成多层级的分类菜单。
示例代码:
<?php
wp_nav_menu([
'theme_location' => 'category_menu',
'menu_class' => 'category-menu',
'depth' => 0, // 0 表示不限制层级深度
]);
?>关键步骤:
在 WordPress 后台创建并注册一个自定义菜单。
将分类项添加到菜单中。
使用 wp_nav_menu 输出菜单。
4. 直接查询数据库
在特殊情况下,你可能需要直接查询数据库以获取多层级分类信息。
示例代码:
<?php
global $wpdb;
$query = "
SELECT t.*, tt.*
FROM {$wpdb->terms} AS t
INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category'
ORDER BY t.name ASC
";
$categories = $wpdb->get_results($query);
function display_nested_categories($categories, $parent = 0, $level = 0) {
echo '<ul>';
foreach ($categories as $category) {
if ($category->parent == $parent) {
echo '<li>';
echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>';
display_nested_categories($categories, $category->term_id, $level + 1);
echo '</li>';
}
}
echo '</ul>';
}
display_nested_categories($categories);
?>总结
这些方法提供了从简单到复杂的不同方式来实现多层级分类的输出。根据具体需求,你可以选择最适合的方案:
简单的分类列表:使用 wp_list_categories。
自定义输出:使用 get_categories 和递归函数。
菜单结构输出:使用 wp_nav_menu。
自定义查询:直接查询数据库。
根据你的使用场景和需求,可以进行适当的调整和扩展。