Using WordPress ‘get_the_terms’ PHP filter

The get_the_terms WordPress PHP filter allows you to modify the list of terms attached to a given post.

Usage

add_filter('get_the_terms', 'your_custom_function', 10, 3);

function your_custom_function($terms, $post_id, $taxonomy) {
  // your custom code here
  return $terms;
}

Parameters

  • $terms: WP_Term[]|WP_Error – Array of attached terms, or WP_Error on failure.
  • $post_id: int – Post ID.
  • $taxonomy: string – Name of the taxonomy.

More information

See WordPress Developer Resources: get_the_terms

Examples

Hide specific category from terms

This example hides a specific category with the ID 5 from the list of terms.

add_filter('get_the_terms', 'hide_specific_category', 10, 3);

function hide_specific_category($terms, $post_id, $taxonomy) {
  if ($taxonomy === 'category') {
    $terms = array_filter($terms, function ($term) {
      return $term->term_id != 5;
    });
  }
  return $terms;
}

Add a custom term to the terms list

This example adds a custom term object to the terms list.

add_filter('get_the_terms', 'add_custom_term', 10, 3);

function add_custom_term($terms, $post_id, $taxonomy) {
  if ($taxonomy === 'post_tag') {
    $custom_term = (object) [
      'term_id' => 999,
      'name' => 'Custom Tag',
      'slug' => 'custom-tag',
      'taxonomy' => 'post_tag'
    ];
    $terms[] = $custom_term;
  }
  return $terms;
}

Change the order of terms

This example sorts the terms alphabetically by their name.

add_filter('get_the_terms', 'sort_terms_alphabetically', 10, 3);

function sort_terms_alphabetically($terms, $post_id, $taxonomy) {
  usort($terms, function ($a, $b) {
    return strcmp($a->name, $b->name);
  });
  return $terms;
}

Exclude terms with a specific parent

This example excludes terms that have a specific parent term ID, for example, 10.

add_filter('get_the_terms', 'exclude_terms_with_specific_parent', 10, 3);

function exclude_terms_with_specific_parent($terms, $post_id, $taxonomy) {
  $terms = array_filter($terms, function ($term) {
    return $term->parent != 10;
  });
  return $terms;
}

Modify term names

This example appends a custom text to the term names.

add_filter('get_the_terms', 'modify_term_names', 10, 3);

function modify_term_names($terms, $post_id, $taxonomy) {
  foreach ($terms as $term) {
    $term->name = $term->name . ' - Custom Text';
  }
  return $terms;
}