Using WordPress ‘post_class_taxonomies’ PHP filter

The post_class_taxonomies WordPress PHP filter allows you to modify the taxonomies used to generate classes for each individual term in a post.

Usage

add_filter('post_class_taxonomies', 'your_custom_function', 10, 4);

function your_custom_function($taxonomies, $post_id, $classes, $css_class) {
  // your custom code here
  return $taxonomies;
}

Parameters

  • $taxonomies (string[]): List of all taxonomy names to generate classes for.
  • $post_id (int): The post ID.
  • $classes (string[]): An array of post class names.
  • $css_class (string[]): An array of additional class names added to the post.

More information

See WordPress Developer Resources: post_class_taxonomies

Examples

Add a custom taxonomy to post classes

This example adds a custom taxonomy named “color” to the post classes.

add_filter('post_class_taxonomies', 'add_color_taxonomy', 10, 4);

function add_color_taxonomy($taxonomies, $post_id, $classes, $css_class) {
  $taxonomies[] = 'color';
  return $taxonomies;
}

Remove category taxonomy from post classes

This example removes the category taxonomy from post classes.

add_filter('post_class_taxonomies', 'remove_category_taxonomy', 10, 4);

function remove_category_taxonomy($taxonomies, $post_id, $classes, $css_class) {
  if(($key = array_search('category', $taxonomies)) !== false) {
    unset($taxonomies[$key]);
  }
  return $taxonomies;
}

Remove all taxonomies except tags

This example keeps only the “post_tag” taxonomy for generating post classes.

add_filter('post_class_taxonomies', 'keep_only_tags', 10, 4);

function keep_only_tags($taxonomies, $post_id, $classes, $css_class) {
  return array('post_tag');
}

Add prefix to taxonomy names

This example adds a “tx-” prefix to all taxonomy names in the post classes.

add_filter('post_class_taxonomies', 'prefix_taxonomies', 10, 4);

function prefix_taxonomies($taxonomies, $post_id, $classes, $css_class) {
  return array_map(function($taxonomy) {
    return 'tx-' . $taxonomy;
  }, $taxonomies);
}

Include only specific taxonomies

This example generates post classes only for “category” and “post_tag” taxonomies.

add_filter('post_class_taxonomies', 'specific_taxonomies', 10, 4);

function specific_taxonomies($taxonomies, $post_id, $classes, $css_class) {
  return array('category', 'post_tag');
}