The get_the_categories WordPress PHP filter allows you to modify the array of categories returned for a specific post.
Usage
add_filter('get_the_categories', 'your_custom_function', 10, 2); function your_custom_function($categories, $post_id) { // your custom code here return $categories; }
Parameters
$categories
(WP_Term[]): An array of categories to return for the post.$post_id
(int|false): The post ID.
More information
See WordPress Developer Resources: get_the_categories
Examples
Exclude a specific category
Exclude the “Uncategorized” category from the list of categories for a post.
add_filter('get_the_categories', 'exclude_uncategorized_category', 10, 2); function exclude_uncategorized_category($categories, $post_id) { return array_filter($categories, function($category) { return $category->slug !== 'uncategorized'; }); }
Sort categories alphabetically
Sort the categories returned for a post alphabetically by their name.
add_filter('get_the_categories', 'sort_categories_alphabetically', 10, 2); function sort_categories_alphabetically($categories, $post_id) { usort($categories, function($a, $b) { return strcmp($a->name, $b->name); }); return $categories; }
Limit the number of categories displayed
Limit the number of categories displayed for a post to 3.
add_filter('get_the_categories', 'limit_category_count', 10, 2); function limit_category_count($categories, $post_id) { return array_slice($categories, 0, 3); }
Add a custom prefix to category names
Add the prefix “Topic: ” to each category name.
add_filter('get_the_categories', 'add_category_prefix', 10, 2); function add_category_prefix($categories, $post_id) { return array_map(function($category) { $category->name = 'Topic: ' . $category->name; return $category; }, $categories); }
Remove parent categories
Display only child categories, excluding parent categories.
add_filter('get_the_categories', 'remove_parent_categories', 10, 2); function remove_parent_categories($categories, $post_id) { return array_filter($categories, function($category) { return $category->parent !== 0; }); }
Exclude a specific category
Exclude the category with the ID of 5 from the list of categories.
add_filter('get_the_categories', 'exclude_specific_category', 10, 2); function exclude_specific_category($categories, $post_id) { $filtered_categories = array_filter($categories, function($category) { return $category->term_id != 5; }); return $filtered_categories; }
Order categories alphabetically
Order the categories alphabetically by their name.
add_filter('get_the_categories', 'order_categories_alphabetically', 10, 2); function order_categories_alphabetically($categories, $post_id) { usort($categories, function($a, $b) { return strcmp($a->name, $b->name); }); return $categories; }
Limit the number of categories
Limit the number of categories returned to 3.
add_filter('get_the_categories', 'limit_categories', 10, 2); function limit_categories($categories, $post_id) { return array_slice($categories, 0, 3); }
Add a prefix to category names
Add the prefix “Category:” to each category name.
add_filter('get_the_categories', 'prefix_category_names', 10, 2); function prefix_category_names($categories, $post_id) { foreach ($categories as $category) { $category->name = 'Category: ' . $category->name; } return $categories; }
Remove empty categories
Remove categories that have no posts assigned to them.
add_filter('get_the_categories', 'remove_empty_categories', 10, 2); function remove_empty_categories($categories, $post_id) { $filtered_categories = array_filter($categories, function($category) { return $category->count > 0; }); return $filtered_categories; }