post_class() um Klasse für Elternkategorie erweitern

Die Funktion post_class() kann standardmäßig folgende Klassen ausgeben:

  • .post-id
  • .post
  • .attachment
  • .sticky
  • .hentry (hAtom microformat pages)
  • .category-ID
  • .category-name
  • .tag-name
  • .format-name

Leider wird aber keine Klasse für den Namen der Elternkategorie ausgegeben, folgende Funktion für die functions.php löst dieses Problem.

PHP / RAW / github:gist
<?php
/**
 * Erweitert post_class() um eine Klasse für Elternkategorien.
 *
 * @author Dominik Schilling
 * @license GPLv2
 * @link https://dominikschilling.de/178/
 *
 * @version 0.2
 */
function ds_add_parent_category_class( $classes ) {
    $cats = get_the_category();

    if ( empty( $cats ) )
        return $classes;

    foreach ( $cats as $cat ) {
        $parent_cat = get_category( $cat->category_parent );
        if ( ! is_wp_error( $parent_cat ) )
            $classes[] = 'parent-category-' . sanitize_html_class( $parent_cat->slug, $parent_cat->term_id );
    }

    return $classes;
}

add_filter( 'post_class', 'ds_add_parent_category_class' );

Beispiel

Einem Artikel ist die Kategorie Plugins zugeordnet. Plugins ist eine Unterkategorie von WordPress.
Die Ausgabe von post_class() könnte dann folgendermaßen aussehen:

<div class="post-151 post type-post status-publish format-standard hentry category-plugins parent-category-wordpress">

Leave a Reply