以上代码的功能是在WordPress环境中显示一个特定的分类(或当前分类,如果$cat_id
是通过get_query_var('cat')
获取的)下的所有子分类(通常称为二级分类)。这通常在网站的侧边栏、页脚或页面的其他区域中用来为访问者提供导航到更具体的子分类页面的链接。
具体来说,代码做了以下几件事:
- 获取当前分类ID:通过
get_query_var('cat')
(在WordPress的category.php模板中有效)或直接设置(如$cat_id = 123;
),获取当前查看的分类的ID。 - 获取子分类:使用WordPress的
get_categories()
函数,根据父分类ID($cat_id
)获取所有子分类。该函数接受一个关联数组作为参数,定义了获取分类的方式,例如是否隐藏空的分类、是否显示层级结构等。 - 遍历并显示子分类:如果找到了子分类,则使用
foreach
循环遍历它们。对于每个子分类,代码生成一个<li>
元素,其中包含一个指向该子分类页面的链接(通过get_category_link($child->term_id)
获取)。这些<li>
元素被设置为内联块(display: inline-block;
),以便它们水平排列,并使用margin-right
属性添加一些间距。 - 处理没有子分类的情况:如果没有找到子分类,则显示一条消息(例如“当前分类下没有子分类。”)。
这段代码通常被嵌入到WordPress的模板文件(如header.php、footer.php、sidebar.php或category.php)中,以便在网站的适当位置显示分类导航。
方法一:
<span class="tag-links" style=" " >
<span style="display: inline-block;">展会分类:</span>
<ul class=" " style=" " >
<?php
// 假设你已经通过某种方式获取了当前的一级分类ID($cat_id)
// 在category.php模板中,你可以使用 $cat = get_query_var('cat'); 来获取当前分类的ID
$cat_id = get_query_var('cat'); // 在category.php模板中有效
// 或者,如果你知道要显示哪个一级分类的ID,可以直接设置,例如:$cat_id = 123;
// 获取当前一级分类下的所有子分类(二级分类)
$children = get_categories(array(
'child_of' => $cat_id = 6 , // 父分类ID
'hide_empty' => 0, // 显示空的分类
'hierarchical' => 0, // 不显示层级结构,只显示二级分类
'taxonomy' => 'category', // 默认是category,但如果你使用的是自定义分类法,需要更改
));
// 遍历并显示二级分类
if ($children) {
foreach ($children as $child) {
echo '<li class=" " style="
display: inline-block; /* 使列表项水平排列 */
margin-right: 10px; /* 可选:添加右边距以分隔列表项 */ " >
<a href="' . get_category_link($child->term_id) . '">' . $child->name . '</a></li>';
}
} else {
echo '当前分类下没有子分类。';
}
?>
</ul>
</span>
以下是修正后的代码:
<span class="tag-links">
<span style="display: inline-block;">展会分类:</span>
<ul>
<?php
// 假设你已经通过某种方式获取了当前的一级分类ID($cat_id)
// 在category.php模板中,你可以使用 $cat = get_query_var('cat'); 来获取当前分类的ID
// 这里我们直接设置一个固定的ID来测试
$cat_id = 6; // 父分类ID
// 获取当前一级分类下的所有子分类(二级分类)
$children = get_categories(array(
'child_of' => $cat_id, // 父分类ID
'hide_empty' => 0, // 显示空的分类
'hierarchical' => 0, // 不显示层级结构,只显示二级分类
'taxonomy' => 'category', // 默认是category,但如果你使用的是自定义分类法,需要更改
));
// 遍历并显示二级分类
if ($children) {
foreach ($children as $child) {
echo '<li style="display: inline-block; margin-right: 10px;">'; // 注意这里简化了样式定义,并且移除了多余的空格和换行
echo '<a href="' . get_category_link($child->term_id) . '">' . $child->name . '</a>';
echo '</li>';
}
} else {
echo '<li>当前分类下没有子分类。</li>';
}
?>
</ul>
</span>
方法二:要同时满足一个或者二个条件
<span class="tag-links">
<span>展会分类:</span>
<ul>
<?php
// 定义要获取子分类的一级分类ID数组
$parent_cat_ids = array(6, 28);
// 遍历每个一级分类ID
foreach ($parent_cat_ids as $parent_cat_id) {
// 获取当前一级分类下的所有子分类(二级分类)
$children = get_categories(array(
'child_of' => $parent_cat_id, // 使用当前一级分类ID
'hide_empty' => 0, // 显示空的分类
'hierarchical' => 0, // 不显示层级结构,只显示二级分类
'taxonomy' => 'category', // 默认是category
));
// 检查是否有子分类
if ($children) {
// 显示一级分类名称(可选)
echo '<li style="font-weight: bold;">一级分类: ' . get_cat_name($parent_cat_id) . '</li>';
// 遍历并显示二级分类
foreach ($children as $child) {
echo '<li style="display: inline-block; margin-right: 10px;">';
echo '<a href="' . get_category_link($child->term_id) . '">' . $child->name . '</a>';
echo '</li>';
}
}
}
?>
</ul>
</span>