如何在li元素中添加WordPress Category中的默认0级父类和1级类?

时间:2022-01-08 作者:stepiadm

我只想添加一个类,如果li是父类,则应该是level-0,如果li是子类,则应该是level-1,等等。我使用以下循环。

 <?php
    $categories = get_categories();
    foreach($categories as $category) {
       echo \'<li class="here-i-want-to-add"><a href="\' . get_category_link($category->term_id) . \'">\' . $category->name . \'</a></li>\';
    }
    ?>

2 个回复
SO网友:Sabry Suleiman

category对象存储父ID,如下所示:$category->parent

如果没有父项,则等于0.

这样,就可以根据的值创建一个等于父类或子父类的变量$category->parent:

$categories = get_categories();
if ( ! is_wp_error( $categories ) ) {
    foreach ( $categories as $category ) {
        $htmlclass = ( $category->parent === 0 ) ? "level-0" : "level-1";
        echo \'<li class="\' . esc_attr( $htmlclass ).\'">\';
        echo \'<a href="\' . esc_url( get_category_link( $category->term_id ) ) . \'">\';
        echo esc_html( $category->name );
        echo \'</a></li>\';
    }
}

SO网友:Max Yudin

受到@Sabry回答的极大启发。

考虑了术语嵌套深度。此外,它适用于所有分类法。

<?php
$taxonomy = \'category\'; // your requred

$terms = get_terms(
    array(
        \'taxonomy\' => $taxonomy,
    )
);

if ( ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        $term_ancestors = get_ancestors( $term->term_id, $taxonomy, \'taxonomy\' );

        $term_nesting_depth = count( $term_ancestors );

        $htmlclass = \'level-\' . $term_nesting_depth;

        echo \'<li class="\' . esc_attr( $htmlclass ) . \'">\';
        echo \'<a href="\' . esc_url( get_term_link( $term, $taxonomy ) ) . \'">\';
        echo esc_html( $term->name );
        echo \'</a></li>\';
    }
}

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>