WordPress.org

Make WordPress Core

Ticket #16223: taxonomy-post-classes2.diff

File taxonomy-post-classes2.diff, 1.5 KB (added by sillybean, 6 years ago)

Adds post classes for public custom taxonomies

  • wp-includes/post-template.php

     
    347347        // hentry for hAtom compliance
    348348        $classes[] = 'hentry';
    349349
    350         // Categories
    351         if ( is_object_in_taxonomy( $post->post_type, 'category' ) ) {
    352                 foreach ( (array) get_the_category($post->ID) as $cat ) {
    353                         if ( empty($cat->slug ) )
    354                                 continue;
    355                         $classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->term_id);
     350        // All public taxonomies
     351        $taxonomies = get_taxonomies( array( 'public' => true ), 'names', 'and' ); 
     352        if ( is_array( $taxonomies ) ) {
     353                foreach ( $taxonomies as $taxonomy ) {
     354                        if ( is_object_in_taxonomy( $post->post_type, $taxonomy ) ) {
     355                                foreach ( (array) get_the_terms( $post->ID, $taxonomy ) as $term ) {
     356                                        if ( empty( $term->slug ) )
     357                                                continue;
     358                                        if ( 'post_tag' == $taxonomy )
     359                                                $classes[] = 'tag-' . sanitize_html_class( $term->slug, $term->term_id );
     360                                        else
     361                                                $classes[] = sanitize_html_class( $taxonomy->name . '-' . $term->slug, $taxonomy->name . '-' . $term->term_id );
     362                                }
     363                        }
    356364                }
    357365        }
    358366
    359         // Tags
    360         if ( is_object_in_taxonomy( $post->post_type, 'post_tag' ) ) {
    361                 foreach ( (array) get_the_tags($post->ID) as $tag ) {
    362                         if ( empty($tag->slug ) )
    363                                 continue;
    364                         $classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id);
    365                 }
    366         }
    367 
    368367        if ( !empty($class) ) {
    369368                if ( !is_array( $class ) )
    370369                        $class = preg_split('#\s+#', $class);