如何使用WordPress当我点击类别链接时,就会出现子类别

时间:2021-02-18 作者:Mehmet Cemil

单击“类别”链接时,如何使子类别出现

 $categories = get_categories();

 print_r($categories);

 foreach($categories as $category){
     
        if(!$category->parent){
         echo \'<a href="\'.get_category_link($category->cat_ID).\'">\' . $category->name .\'</a><br>\';
        }

       
 }

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

下面是如何获取所有顶级类别并循环它们以创建链接列表的方法,

$parent_categories = get_categories( array(
  \'fields\' => \'id=>name\', // other term data no needed here
  \'parent\'  => 0,
));

$parent_category_links = array();
foreach ($parent_categories as $parent_category_id => $parent_category_name) {
    $parent_category_links[] = sprintf(
        \'<li><a href="%s">%s</a></li>\',
        esc_url( get_term_link( $parent_category_id, \'category\' )),
        esc_html( $parent_category_name )
    );
}
echo \'<ul>\' . implode(\'\', $parent_category_links) . \'</ul>\';
单击上面循环创建的类别链接将使用户转到类别的存档视图(category.php/archive.php/index.php),在那里可以显示子类别的列表。就像这样,

$child_categories = get_categories( array(
  \'fields\' => \'id=>name\', // other term data no needed here
  \'parent\'  => get_queried_object_id(), // you should check that current object is a WP_Term, if you\'re using generic archive or index template
));

if ( $child_categories ) {
    $child_category_links = array();
    foreach ($child_categories as $child_category_id => $child_category_name) {
        $child_category_links[] = sprintf(
            \'<li><a href="%s">%s</a></li>\',
            esc_url( get_term_link( $child_category_id, \'category\' )),
            esc_html( $child_category_name )
        );
    }
    echo \'<ul>\' . implode(\'\', $child_category_links) . \'</ul>\';
} else {
    // The Loop to display posts
}
上述代码是一个简化的示例,您应该对其进行修改,以符合您的确切需要和设置


P.s。get_categories() 返回的数组WP_Term默认情况下为。要访问术语id,应使用$term->term_id.

相关推荐

在`wp_list_ategories()`函数中向Anchor标签添加HTML属性

我正在使用wp_list_categories() 函数,用于生成无序列表,其中包含类别的列表项和锚定标记。有没有办法将HTML属性添加到<a> 包含类别链接的标签?我想添加一个title 与类别相同的属性,以及class 属性,但查看文档,在关联数组属性列表中,我看不到如何执行此操作?我使用的代码是:<?php echo \'<ul class="cat-sidebar-list">\'; $args_list =