get_category_link( int|object $category ): string

Retrieves category link URL.


See also


Category ID or object.


string Link on success, empty string if category does not exist.

More Information

This function returns the correct url for a given Category ID. In a Plugin or Theme, it can be used as early as the setup_theme Action. Any earlier usage, including plugins_loaded, generates a Fatal Error.


function get_category_link( $category ) {
	if ( ! is_object( $category ) ) {
		$category = (int) $category;

	$category = get_term_link( $category );

	if ( is_wp_error( $category ) ) {
		return '';

	return $category;



User Contributed Notes

  1. Skip to note 4 content

    Category Link

        // Get the ID of a given category
        $category_id = get_cat_ID( 'Category Name' );
        // Get the URL of this category
        $category_link = get_category_link( $category_id );
    <!-- Print a link to this category -->
    <a href="<?php echo esc_url( $category_link ); ?>" title="Category Name">Category Name</a>
  2. Skip to note 5 content

    Worth remembering that a category_id is a term_id and not a term_taxonomy_id

    (And, yes, you can figure that out from reading the code. But these sometimes will be the same, fooling some people into thinking that the term_taxonomy_id was right. But sooner or later you will probably get examples where they are different, and then things do not work right.)

  3. Skip to note 6 content

    Example of a categories list with the Bootstrap 5 card and badge count.

    <div class="card border border-0 m-2" style="width: 250px;">
        <div class="card-header bg-primary text-white">
        foreach ( $categories as $category ) {
            echo '<a class="text-decoration-none list-group-item list-group-item-action text-dark" href="' . esc_attr( esc_url( get_category_link( $category->term_id ) ) ) . '">;
            echo '<div class="d-flex justify-content-between align-items-start">';
            echo esc_html( $category->name );
            echo '<span class="badge bg-primary rounded-pill">' . esc_html( $category->count ) . '</span>';
            echo '</div>';
            echo '</a>';

You must log in before being able to contribute a note or feedback.