get_the_tags( int|WP_Post $post ): WP_Term[]|false|WP_Error

Retrieves the tags for a post.


Parameters

$post int|WP_Post Required
Post ID or object.

Top ↑

Return

WP_Term[]|false|WP_Error Array of WP_Term objects on success, false if there are no terms or the post does not exist, WP_Error on failure.


Top ↑

More Information

This function returns an array of objects, one object for each tag assigned to the post. If this function is used in The Loop, then no ID need be passed.

This function does not display anything; you should access the objects and then echo or otherwise use the desired member variables.

The following example displays the tag name of each tag assigned to the post (this is like using the_tags() , but without linking each tag to the tag view, and using spaces instead of commas):

<?php
$posttags = get_the_tags();
if ($posttags) {
  foreach($posttags as $tag) {
    echo $tag->name . ' '; 
  }
}
?>

Top ↑

Source

File: wp-includes/category-template.php. View all references

function get_the_tags( $post = 0 ) {
	$terms = get_the_terms( $post, 'post_tag' );

	/**
	 * Filters the array of tags for the given post.
	 *
	 * @since 2.3.0
	 *
	 * @see get_the_terms()
	 *
	 * @param WP_Term[]|false|WP_Error $terms Array of WP_Term objects on success, false if there are no terms
	 *                                        or the post does not exist, WP_Error on failure.
	 */
	return apply_filters( 'get_the_tags', $terms );
}

Top ↑

Hooks



Top ↑

Changelog

Changelog
Version Description
2.3.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 2 content
    Contributed by hearvox

    This example prints the tags of current post:
    Code must be used in The Loop.

    $post_tags = get_the_tags();
    
    if ( $post_tags ) {
    	foreach( $post_tags as $tag ) {
        echo $tag->name . ', '; 
    	}
    }
  2. Skip to note 3 content
    Contributed by marzian

    // Show post tags with link and a custom separator

    function wpdocs_show_tags() {
        $post_tags = get_the_tags();
        $separator = ' | ';
        $output = '';
    
        if ( ! empty( $post_tags ) ) {
            foreach ( $post_tags as $tag ) {
                $output .= '<a href="' . esc_attr( get_tag_link( $tag->term_id ) ) . '">' . __( $tag->name ) . '</a>' . $separator;
            }
        }
    
        return trim( $output, $separator );
    }
  3. Skip to note 4 content
    Contributed by hearvox

    Example using post ID to get tags:
    This doesn’t need to be in The Loop.

    $post_tags = get_the_tags( 24 );
    
    print_r( $post_tags );
    
    /*
    This above prints the tag objects for post ID #24 (if post has any tags):
    Array
    (
        [0] => WP_Term Object
            (
                [term_id] => 108
                [name] => tag-1
                [slug] => tag-1
                [term_group] => 0
                [term_taxonomy_id] => 109
                [taxonomy] => post_tag
                [description] => 
                [parent] => 0
                [count] => 1
                [filter] => raw
                [object_id] => 24
            )
    
        [1] => WP_Term Object
            (
                [term_id] => 109
                [name] => tag-2
                [slug] => tag-2
                [term_group] => 0
                [term_taxonomy_id] => 110
                [taxonomy] => post_tag
                [description] => 
                [parent] => 0
                [count] => 1
                [filter] => raw
                [object_id] => 24
            )
    
    )
    */
  4. Skip to note 5 content
    Contributed by exonfang

    Display tags with links to tag pages in an unordered list:

    $post_tags = get_the_tags();
    if ( ! empty( $post_tags ) ) {
    	echo '<ul>';
    	foreach( $post_tags as $post_tag ) {
    		echo '<li><a href="' . get_tag_link( $post_tag ) . '">' . $post_tag->name . '</a></li>';
    	}
    	echo '</ul>';
    }
  5. Skip to note 6 content
    Contributed by hearvox

    Execute code based on different tag values:
    This code displays different HTML for different tags. Add elseif statements as needed.

    <?php
    $post_tags = get_the_tags();
    foreach( $post_tags as $tag) :
    	if ( $tag->name === 'tag-1' ) :
    ?>
    
    <p>Display HTML for posts tagged with 'tag-1'.</p>
    
    <?php
    	elseif ( $tag->name === 'tag-2' ) :
    ?>
    
    <p>Display HTML for posts tagged with 'tag-2'.</p>
    
    <?php
    	else :
    	// Post has neither tag, do nothing.
    	endif; 
    endforeach;
    ?>
  6. Skip to note 7 content
    Contributed by hearvox

    Function to show tags in a dropdown:

    <?php
    function dropdown_tags(){
    	echo '<select name="tag" id="tag" class="postform">';
        foreach ( get_the_tags() as $tag ) {
            echo '<option value="' . $tag->name . '">' . $tag->name . "</option>\n";
        }
        echo '</select>';
    }
    ?>
    <h2><?php _e( 'Tags:', 'textdomain' ); ?></h2>
    <form id="tags-select" class="tags-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
        <?php dropdown_tags(); ?>
        <input type="submit" name="submit" value="view" />
    </form>
  7. Skip to note 8 content
    Contributed by tbluhm

    Loop with tag post by ID and Link to -> /tag/slug:

                                  // GET TAGS BY POST_ID
                                   $tags = get_the_tags($post->ID);  ?>
     
                                   <ul class="cloudTags">
    
                                        <?php foreach($tags as $tag) :  ?>
    
                                       <li>
    									  <a class="btn btn-warning"
                                              href="<?php bloginfo('url');?>/tag/<?php print_r($tag->slug);?>">
                                                    <?php print_r($tag->name); ?>
                                           </a>	
                                        </li>
                                        <?php endforeach; ?>
    						      </ul>

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