get_category_link( int|object $category ): string

Retrieves category link URL.

Description

See also

Parameters

$categoryint|objectrequired
Category ID or object.

Return

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.

Source

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;
}

Changelog

VersionDescription
1.0.0Introduced.

User Contributed Notes

  1. Skip to note 4 content

    Category Link

    <?php
        // 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">
            <h5>Categorias</h5>
        </div>
    
        <?php
        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>';
        }
        ?>
    
    </div>

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