WordPress: Automatisch alle Postformate unterstützen
07.09.2012 in: Webdesign und WordPress
In WordPress 3.1 wurden die beiden Post-Taxonomien post_tag
und category
um eine weitere ergänzt: post_format
. Derzeit stehen zehn zur Auswahl:
standard
aside
chat
gallery
link
image
quote
status
video
audio
Selbst ergänzen können wir sie nicht, denn sie sollen ja ein Standard sein, der auch dann noch funktioniert, wenn der Nutzer das Theme wechselt. Damit man sie überhaupt verwenden kann, muß sich das Theme in der Setup-Funktion als willig deklarieren und die unterstützten Formate explizit auflisten:
add_theme_support('post-formats'
, array('aside'
,'video'
) );
Auf den ersten Blick nicht falsch. Aber … wenn der Nutzer nun zu einem Theme wechselt, das zwei andere Formate unterstützt, oder wenn wir unser Theme später um ein Format nachrüsten, dann hat kein älterer Beitrag das passende Format. Deshalb finde ich es praktisch, gleich alle Formate aufzulisten, selbst wenn ich die im Theme nicht besonders behandle.
Der maximal unelegante Weg sieht so aus:
add_theme_support('post-formats'
, array('aside'
,'chat'
,'gallery'
,'link'
,'image'
,'quote'
,'status'
,'video'
,'audio'
) );
Hier haben wir zwei Probleme:
- Dieser Code ist geschwätzig; er wiederholt einfach Werte, die WordPress schon aus der Funktion
get_post_format_strings()
kennt. - Kommt einmal ein neues Format hinzu (
'code'
bitte!), müssen wir die Liste wieder anfassen.
Jetzt könnten wir einfach get_post_format_strings()
benutzen:
add_theme_support(
'post-formats'
,
array_keys( get_post_format_strings() )
);
Allerdings haben wir nun das Format 'standard'
in der Liste, und daran scheitert WordPress sehr … originell: Der Eintrag Standard wird verdoppelt.
Also zuppeln wir den heraus, und dann übergeben wir die komplette Liste.
add_theme_support('post-formats'
, array_diff( array_keys( get_post_format_strings() ), array('standard'
) ) );
Justin Tadlock zeigt gerade in einer Serie, wie man die einzelnen Formate im Theme behandeln kann. Sie beginnt mit dem Format chat
.