WordPress.org

Make WordPress Core

Ticket #16223: taxonomy-post-classes.diff

File taxonomy-post-classes.diff, 1.5 KB (added by sillybean, 5 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, $taxonomy ) . '-' . sanitize_html_class( $term->slug, $term->term_id ); 
     362                                } 
     363                        } 
    356364                } 
    357365        } 
    358  
    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  
     366         
    368367        if ( !empty($class) ) { 
    369368                if ( !is_array( $class ) ) 
    370369                        $class = preg_split('#\s+#', $class);