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

Retrieves the terms for a post.

Parameters

$post_idintoptional
The Post ID. Does not default to the ID of the global $post. Default 0.
$taxonomystring|string[]optional
The taxonomy slug or array of slugs for which to retrieve terms. Default 'post_tag'.

Default:'post_tag'

$argsarrayoptional
Term query parameters. See WP_Term_Query::__construct() for supported arguments.
  • fields string
    Term fields to retrieve. Default 'all'.

Default:array()

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.

Source

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

Changelog

VersionDescription
2.8.0Introduced.

User Contributed Notes

  1. Skip to note 6 content

    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 7 content

    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 8 content

    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 9 content

    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 ''; }
  5. Skip to note 10 content

    You can get the taxonomy terms HTML using this function am_get_post_term

    function am_get_post_terms( $post_id = 0, $taxonomy = 'category', $custom_html = ['ul','li','a'] ) {	$post_terms = wp_get_post_terms( $post_id, $taxonomy );	$custom_html[0] = isset($custom_html[0]) ? $custom_html[0] : 'ul';	$custom_html[1] = isset($custom_html[1]) ? $custom_html[1] : 'li';	$custom_html[2] = isset($custom_html[2]) ? $custom_html[2] : 'a';	$post_term_html = '';	$post_term_html .= '<' . $custom_html[0] . '>';	foreach( $post_terms as $p_term ) {	$post_term_html .= '<' . $custom_html[1] . '><' . $custom_html[2] . ' href="'. get_term_link( $p_term->term_id, $taxonomy ) .'">'. $p_term->name .'</' . $custom_html[2] . '></' . $custom_html[1] . '>';	}	$post_term_html .= '</' . $custom_html[0] . '>';	return $post_term_html; } Call the function in single.php file work for all CPT: 
    echo am_get_post_terms( get_the_ID(), 'category',['div','span','a'] );

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