WordPress函数get_the_category_list()获取所有分类,并以html的形式显示

描述:

获取所有分类,并以html的形式显示

用法:

<?php get_the_category_list( $separator, $parents, $post_id ); ?>

参数:

$separator

(string) (可选) 可选,默认为空字符串。类别之间的分隔符。

默认值: 空字符串

$parents

(string) (可选) 可选。如何显示父对象。值:“multiple”、“single”,空字符串

默认值: 空字符串

$post_id

(int) (可选) 可选。发布ID以检索分类。

默认值: false

源文件:

function get_the_category_list( $separator = '', $parents = '', $post_id = false ) {
    global $wp_rewrite;
    if ( ! is_object_in_taxonomy( get_post_type( $post_id ), 'category' ) ) {
        /** This filter is documented in wp-includes/category-template.php */
        return apply_filters( 'the_category', '', $separator, $parents );
    }
 
    /**
     * Filters the categories before building the category list.
     *
     * @since 4.4.0
     *
     * @param WP_Term[] $categories An array of the post's categories.
     * @param int|bool  $post_id    ID of the post we're retrieving categories for. When `false`, we assume the
     *                              current post in the loop.
     */
    $categories = apply_filters( 'the_category_list', get_the_category( $post_id ), $post_id );
 
    if ( empty( $categories ) ) {
        /** This filter is documented in wp-includes/category-template.php */
        return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents );
    }
 
    $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'rel="category tag"' : 'rel="category"';
 
    $thelist = '';
    if ( '' == $separator ) {
        $thelist .= '<ul class="post-categories">';
        foreach ( $categories as $category ) {
            $thelist .= "\n\t<li>";
            switch ( strtolower( $parents ) ) {
                case 'multiple':
                    if ( $category->parent ) {
                        $thelist .= get_category_parents( $category->parent, true, $separator );
                    }
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" ' . $rel . '>' . $category->name . '</a></li>';
                    break;
                case 'single':
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '"  ' . $rel . '>';
                    if ( $category->parent ) {
                        $thelist .= get_category_parents( $category->parent, false, $separator );
                    }
                    $thelist .= $category->name . '</a></li>';
                    break;
                case '':
                default:
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" ' . $rel . '>' . $category->name . '</a></li>';
            }
        }
        $thelist .= '</ul>';
    } else {
        $i = 0;
        foreach ( $categories as $category ) {
            if ( 0 < $i ) {
                $thelist .= $separator;
            }
            switch ( strtolower( $parents ) ) {
                case 'multiple':
                    if ( $category->parent ) {
                        $thelist .= get_category_parents( $category->parent, true, $separator );
                    }
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" ' . $rel . '>' . $category->name . '</a>';
                    break;
                case 'single':
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" ' . $rel . '>';
                    if ( $category->parent ) {
                        $thelist .= get_category_parents( $category->parent, false, $separator );
                    }
                    $thelist .= "$category->name</a>";
                    break;
                case '':
                default:
                    $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" ' . $rel . '>' . $category->name . '</a>';
            }
            ++$i;
        }
    }
 
    /**
     * Filters the category or list of categories.
     *
     * @since 1.2.0
     *
     * @param string $thelist   List of categories for the current post.
     * @param string $separator Separator used between the categories.
     * @param string $parents   How to display the category parents. Accepts 'multiple',
     *                          'single', or empty.
     */
    return apply_filters( 'the_category', $thelist, $separator, $parents );
}