Die Möglichkeit in WordPress eigene Post-Types einzubringen erfreut sich wachsender Beliebtheit und kann so manche Arbeit vereinfachen - wichtig ist, dass man im Vorfeld die Anforderungen exakt bewertet und die Möglichkeiten einschätzt. Aber darum soll es in diesem kleinen Beitrag nicht gehen - ich möchte kürz eine Lösung zeigen, die den oder die neuen Post Typen in das Frontend bringt, um die neuen Typen mittels CSS anzusprechen.
Im Grunde wird lediglich die Funktion body_class() von WordPress erweitert um die eigenen Post Types, so dass man sie übergeordnet ansprechen kann und das Design entsprechend gestaltet.
Gleiches hatte ich schon in einem anderen Beitrag ausführlicher erläutert, wo der Titel eines Beitrags in diese Funktion übernommen wurde; daher dort bitte die Zusatzinformationen abholen.
// Adds classes for custom post types to body_class() and post_class()
function fb_add_body_class( $class ) {
$post_type = 'my_example_post_type'; // der Post Type
if ( get_query_var('post_type') === $post_type ) { // nur wenn der Post Type aktiv ist, dann erweitern
$class[] = $post_type;
$class[] = 'type-' . $post_type;
}
return $class;
}
add_filter( 'body_class', 'fb_add_body_class' );
Alternativ kann man auch die post_class() Funktion erweitern um die Klasse des Custom Post Type nicht direkt am body-Tag zu haben. Dazu verwende ich die gleiche Funktion und es muss lediglich der Hook für die post-Klassen angesprochen werden.
add_filter( 'post_class', 'fb_add_body_class' );
Beide Template Tags werden im HTML-Tag verwendet, wie auch die verlinkten Codex-Seiten aufzeigen; bzw. ein Beispiel für die Post-Klasse:
<div <?php post_class('class-name'); ?>>
Viel Freude beim austesten und nutzen. Die Kommentarfunktion steht wie immer für Verbesserungen und Diskussion offen.
ich glaub man sollte das $this-> bei der Funktion weglassen
gruss
@Markus: stimmt, gefixt - da ich meine Sachen in Klassen ablegen und dann immer mal ein Bsp. raus hole, geht das nicht immer fehlerfrei von statten. Danke dir!
Hallo Frank,
entweder bin ich verwirrt, aber das wird doch schon automatisch eingefügt?
Also auf der Single Seite ist das doch schon so?
.single-POSTTYPENAME {}
@Ralf: ja, es geht eher darum, wenn man es in eigenen Ausgaben haben will, also nicht auf die Standards von WP zurück greifen kann. Also ein Beispiel was nur der Umsetzung hilft, eventuell so auf single und page nicht notwendig, es sei denn, man will immer die gleiche Klasse nutzen.
Optimal! Hab ne Ewigkeit nach einer anständigen Erklärung gesucht! Danke für deine Mühe.
Mach weiter so! Mir gefällt dein Einsatz/Blog/Wissen.
Weiss jemand vlt. wie das auszusehen hat wenn ich mehrere cpt's habe und für jeden jeweils diese Funktion benötige?
Wie muss ich dann
$post_type = 'my_example_post_type'; // der Post Typeumändern?
Hab's mit diversen Varianten versucht, z.B.
$post_type = 'movies', 'cars'; // der Post Typeoder
$post_type = array('movies', 'cars'); // der Post Typekein Erfolg.
Das müsste doch irgendwie möglich sein?