wp_get_post_terms( int $post_id, string|string[] $taxonomy = 'post_tag', array $args = array() )

Retrieves the terms for a post.


Parameters Parameters

$post_id

(int) (Optional) The Post ID. Does not default to the ID of the global $post. Default 0.

$taxonomy

(string|string[]) (Optional) The taxonomy slug or array of slugs for which to retrieve terms.

Default value: 'post_tag'

$args

(array) (Optional) Term query parameters. See WP_Term_Query::__construct() for supported arguments.

  • 'fields'
    (string) Term fields to retrieve. Default 'all'.

Default value: array()


Top ↑

Return Return

(array|WP_Error) Array of WP_Term objects on success or empty array if no terms were found. WP_Error object if $taxonomy doesn't exist.


Top ↑

Source Source

File: wp-includes/post.php

function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) {
	$post_id = (int) $post_id;

	$defaults = array( 'fields' => 'all' );
	$args     = wp_parse_args( $args, $defaults );

	$tags = wp_get_object_terms( $post_id, $taxonomy, $args );

	return $tags;
}


Top ↑

Changelog Changelog

Changelog
Version Description
2.8.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by Dustin Falgout

    The difference between this function and get_the_terms() is that this function’s results are not cached (thus, it’ll hit the database every time its called).

  2. Skip to note 2 content
    Contributed by Codex

    Examples

    //Returns All Term Items for "my_taxonomy".
    $term_list = wp_get_post_terms( $post->ID, 'my_taxonomy', array( 'fields' => 'all' ) );
    print_r( $term_list );
    
    // Returns Array of Term Names for "my_taxonomy".
    $term_list = wp_get_post_terms( $post->ID, 'my_taxonomy', array( 'fields' => 'names' ) );
    print_r( $term_list );
    
    // Returns Array of Term ID's for "my_taxonomy".
    $term_list = wp_get_post_terms( $post->ID, 'my_taxonomy', array( 'fields' => 'ids' ) );
    print_r( $term_list );
    
  3. Skip to note 3 content
    Contributed by tradesouthwest

    Get term category to only run function if the post (CPT) has that category:

    /**
     * Get category and add text to that page, only.
     * 
     * @param  string $terms Get post terms
     * @return string        Text
     */
    function wpdocs_additional_measurements() {
         global $post;
    
        $innertext = "Hemmed tarps have seatbelt material woven into the hems.";
        $terms = wp_get_post_terms( $post->ID, 'product_cat' );
    
        foreach ( $terms as $term ) {
            $categories[] = $term->slug;
        }
                
        // Look for term/category by slug	
        if ( in_array( 'custom-tarps', $categories ) ) {
            printf( '<p>%s</p>',
                    esc_html__( $innertext, 'woocommerce' )
            );
       }
            
    } 
    add_action( 'woocommerce_before_add_to_cart_button', 'wpdocs_additional_measurements', 9 ); 

    Use curly brackets recommended but not needed on one expression of foreach

  4. Skip to note 4 content
    Contributed by Mehedi Foysal

    Get all taxonomy slug of a post

    function post_taxonomy_slug_array( $tax_name = 'category' ) {
    
        $terms = wp_get_post_terms( get_the_ID(), $tax_name, array( "fields" => "slugs" ) );
        if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    
            $term_array = array();
    
            foreach ( $terms as $term ) {
                $term_array[] = $term;
            }
    
            return $term_array;
        }
    
        return '';
    }
    

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