WordPress post_class() erweitern

5. Mai 2010 - WordPress Funktionen - 2 Kommentare

WordPress post_class() erweitern

Seit der Version 2.7 steht uns in WordPress bei der Theme-Entwicklung die außerordentlich praktische und umfangreiche Funktion post_class() zur Verfügung. In komplexeren WordPress-Themes ist es manchmal nötig diese noch zu erweitern. Das ist auf verschiedene Arten möglich.

post_class() anwenden

Mit der WordPress-Version 2.7 wurde die Funktion post_class() eingeführt. Diese wird meist auf einen den Post im Loop umfassenden div-Container angewendet.

<div <?php post_class(); ?>>
    <!-- hier der post -->
</div>

Hier gibt die Funktion eine Reihe von CSS-Klassen aus, die für diesen Posts spezifisch sind (Post oder Page, Kategorie, Tags, sticky etc.).

post_class() erweitern

In komplexeren WordPress-Themes kann es nun vorkommen, dass diese Standardklassen nicht ausreichen und man den Post-Klassen weitere hinzufügen möchte.

Am einfachsten geht das wie folgt:

<?php post_class('meine-klasse noch-eine'); ?>

In diesem Fall würden die Klassen meine-klasse und noch-eine den Standardpostklassen hinzugefügt.

post_class() erweitern (functions.php)

Ein anderer Ansatz ist das Steuern der Post-Klassen zentral über die functions.php. Dafür bedienen wir uns dem WordPress-Filter post_class:

<?php
add_filter('post_class','my_post_classes');
function my_post_classes($classes) {
    $classes[] = 'meine-klasse';
    $classes[] = 'noch-eine';
    return $classes;
}
?>

Auch in diesem Fall würden die Klassen meine-klasse und noch-eine den Standardpostklassen hinzugefügt.

post_class() erweitern (functions.php & Conditional Tags)

Spannend wird es nun, wenn man die Post-Klassen mithilfe der Conditional Tags vom gezeigten Inhalt abhängig erweitert.

<?php
add_filter('post_class','my_post_classes');
function my_post_classes($classes) {
    if(is_front_page()) $classes[] = 'frontpage-klasse';
    if(is_singular()) $classes[] = 'singular-klasse';
    return $classes;
}
?>

Dieses macht Sinn, wenn man z. B. auf der Startseite Posts in mehreren Spalten anzeigen möchte. Dazu könnte man die Klassen z. B. um box erweitern.

Auch wenn man mit dem clearfix-Hack arbeitet, kann diese Funktion sehr nützlich sein.

<?php
add_filter('post_class','my_post_classes');
function my_post_classes($classes) {
    if(is_archive()) $classes[] = 'clearfix';
    return $classes;
}
?>

Relevante Links

Autor

Moin, ich bin Simon und ehemaliger Betreiber dieses Blogs.

RSS abonnieren

und so weiter...

Kommentare

  • Franz - am 6. Mai 2010 - Antworten

    Da ist ein Tippfehler in den Zeilen mit add_filter().

    Ansonsten guter Post ;)

Deine Meinung