有几种方法可以创建 HTML 类别列表。
默认 CSS 选择器
最简单的方法是使用wp_list_categories()显示类别列表并使用默认 CSS 选择器设置输出样式:
li.categories
li.cat-项目
li.cat-item-7
li.current-cat
li.current-cat-parent
ul.children
Walker_Category 类
该类Walker
用于遍历菜单或类别等分层数据。它是一个抽象类,有四个抽象方法start_el()
, end_el()
, start_lvl()
, end_lvl()
。不需要覆盖类的所有抽象方法,只需要覆盖那些需要的方法。
$args = array( 'hide_empty' => false, 'walker' => new MyWalker(), 'title_li' => false );
wp_list_categories( $args );
class MyWalker extends Walker_Category {
function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
$output .= '<a href="' . get_category_link( $category->term_id ) . '" >' . $category->name . '</a><br/>';
}
function end_el( &$output, $page, $depth = 0, $args = array() ) {}
function start_lvl( &$output, $depth = 0, $args = array() ) {
$output .= '<ul class="span-5 colborder list_main">'.PHP_EOL;
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$output .= '</ul>'.PHP_EOL;
}
}
递归函数也是一种遍历类别的好方法。这样,您必须手动获取每个节点上的类别。由于get_categories()函数返回所有子节点中的所有子类别,因此必须传递当前类别的 id 才能仅显示当前级别类别。
get_the_categories();
function get_the_categories( $parent = 0 )
{
$categories = get_categories( "hide_empty=0&parent=$parent" );
if ( $categories ) {
echo '<ul class="span-5 colborder list_main">';
foreach ( $categories as $cat ) {
if ( $cat->category_parent == $parent ) {
echo '<a href="' . get_category_link( $cat->term_id ) . '" >' . $cat->name . '</a><br/>';
get_the_categories( $cat->term_id );
}
}
echo '</ul>';
}
}