La función post_class() (un template tag en el argot de WordPress) imprime el atributo HTML class con un conjunto de clases basadas en características del post actual (se debe utilizar dentro del Loop). Si se quieren obtener las clases del post pero no imprimirlas se utiliza la función get_post_class() (se puede utilizar fuera del Loop).

Las clases que se añaden son muy variadas. Por poner un ejemplo, se añaden clases en base al tipo de post, categorías y etiquetas utilizadas o el formato del post. Esto permite, entre otras ventajas, un control muy fino sobre el estilo del post al poder aplicar reglas CSS específicas según estas clases.

Si utilizamos alguna de estas funciones con un custom post type, también se añadirá como clase. Sin embargo, los términos de una taxonomía personalizada (custom taxonomy) no se añaden de forma automática como se añaden las categorías o las etiquetas. Afortunadamente podemos utilizar el filtro post_class para añadir nuestras propias clases basadas en el custom taxonomy.

add_filter( 'post_class', 'cyb_custom_taxonomy_post_class', 10, 3 );
function custom_taxonomy_post_class( $classes, $class, $post_id ) {

    //Cambiar por tu custom taxonomy
    $taxonomy = 'my-custom-taxonomy';
    $terms = get_the_terms( (int) $post_id, $taxonomy );

    if( ! empty( $terms ) && ! is_wp_error( $terms ) ) {

        foreach( $terms as $order => $term ) {

            if( !in_array( $term->slug, $classes ) ) {

                $classes[] = $term->slug;

             }

         }

     }

     return $classes;

}