get_the_category_list() WordPress Function

The get_the_category_list() function is a built-in function in WordPress that can be used to retrieve a list of all the categories for a given post.

get_the_category_list( string $separator = '', string $parents = '', int $post_id = false ) #

Retrieves category list for a post in either HTML list or custom format.


Description

Generally used for quick, delimited (e.g. comma-separated) lists of categories, as part of a post entry meta.

For a more powerful, list-based function, see wp_list_categories().

Top ↑

See also


Top ↑

Parameters

$separator

(string)(Optional) Separator between the categories. By default, the links are placed in an unordered list. An empty string will result in the default behavior.

Default value: ''

$parents

(string)(Optional) How to display the parents.

Default value: ''

$post_id

(int)(Optional) Post ID to retrieve categories.

Default value: false


Top ↑

Return

(string) Category list for a post.


Top ↑

Source

File: wp-includes/category-template.php

140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
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 );
}


Top ↑

Changelog

Changelog
VersionDescription
1.5.1Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.