Random: Customized Meta #1
Ich hab gerade beim Lesen bemerkt, dass es auf vielen Seiten unglaublich gut gestylte Metas gibt. Viele Livejournal Blogger zum Beispiel haben neben dem Autoren, Datum und Kategorien auch noch Felder für Musik, Wetter, Ort und so weiter.
Meine Frage also: Wie geht das?
Da ich mich derzeit auch mit Metadaten auseinandersetze(n sollte), hab ich mir vorgenommen, das lieber jetzt sofort zutun.
Prinzipiell ist die Meta-Funktion ziemlich simpel. Benutzt wird sie an sich durch <?php the_meta(); ?> und gibt die Metadaten eines Posts wieder. Demzufolge müssen sie auch entweder innerhalb der Loop (des Loops?) oder in Templates wie single.php angegeben werden. (Denn woanders gibt es nun einmal wenig Metadaten..)
Der oben genannte Code hat keine Parameter, aber es gibt verschiedene Möglichkeiten, ihn zu nutzen (und zu ergänzen).
Hier hab ich beispielsweise einige Probleme gehabt. - Wird, wenn man diesen Code eingibt, wirklich alles wiedergegeben? Und ich bin mir momentan auch noch nicht ganz sicher, denn in den Themes, die ich bisher angesehen habe, gab es noch zusätzliche Codes und die Funktion 'get post meta' hat mich noch mehr verwirrt.
Ich denke, der Unterschied ist, dass bei the_meta wirklich alles angezeigt wird während man über get_post_meta individuell angeben kann, welche Daten wie angezeigt werden sollen.
Wordpress meint, das Ganze wird so genutzt:
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
Die Parameter sind also..
$post_id - Ein Muss. Die ID des Post's dessen Daten angegeben werden sollen. Um sie zu bekommen benutzt man $post->ID
$key Ein String, der die Namen der Metas, die man möchte, beinhaltet. Ebenfalls ein Muss.
$single ist optional. Hab mich noch nicht wirklich damit beschäftigt..
Es wird auch ein einfaches Beispiel auf der Codex Seite angegeben. Dieser Code wurde im Loop benutzt und gibt zusätzlich ein Thumbnail an. Sweet, auch wenn ich noch nicht genau weiß, wie man das Ganze nutzt.. Ich glaub, da gab es eine Funktion für... (Elmastudio)
<?php if ( get_post_meta($post->ID, 'thumb', true) ) : ?>
<a href="<?php the_permalink() ?>" rel="bookmark">
<img class="thumb" src="<?php echo get_post_meta($post->ID, 'thumb', true) ?>" alt="<?php the_title(); ?>" />
</a>
<?php endif; ?>
Außerdem findet sich auch noch ein unglaublich ausführliches Beispiel der Metadaten hier:
This function handles the mood and listening_to meta tags.
It can be called with an action of update, delete, and get (default)
When called with an action of update, either $mood or $listening_to must be provided.
i.e. mood_music( $post->ID, 'update', 'Happy', 'Bon Jovi - It's My Life' );
function mood_music( $post_id, $action = 'get', $mood = 0, $listening_to = 0 ) {
//Let's make a switch to handle the three cases of 'Action'
if( ! $mood && ! $listening_to )
//If nothing is given to update, end here
//add_post_meta( $post_id, $meta_key, $meta_value, $unique = false )
//If the $mood variable is supplied,
//add a new key named 'mood', containing that value.
//If the 'mood' key already exists on this post,
//this command will simply add another one.
add_post_meta( $post_id, 'mood', $mood );
//update_post_meta usage:
//update_post_meta( $post_id, $meta_key, $meta_value )
//If the $listening_to variable is supplied,
//add a new key named 'listening_to', containing that value.
//If the 'listening_to' key already exists on this post,
//this command will update it to the new value
add_post_meta( $post_id, 'listening_to', $listening_to, true ) or
update_post_meta( $post_id, 'listening_to', $listening_to );
//delete_post_meta usage:
//delete_post_meta( $post_id, $meta_key, $prev_value = ' ' )
//This will delete all instances of the following keys from the given post
delete_post_meta( $post_id, 'mood' );
delete_post_meta( $post_id, 'listening_to' );
//To only delete 'mood' if it's value is 'sad':
//delete_post_meta( $post_id, 'mood', 'sad' );
//get_post_meta( $post_id, $meta_key, $single value = false )
//$stored_moods will be an array containing all values of the meta key 'mood'
$stored_moods = get_post_meta( $post_id, 'mood' );
//$stored_listening_to will be the first value of the key 'listening_to'
$stored_listening_to = get_post_meta( $post_id, 'listening_to', 'true' );
//Now we need a nice ouput format, so that
//the user can implement it how he/she wants:
//ie. echo mood_music( $post->ID, 'get' );
$return = '<div class='mood-music'>';
if ( ! empty( $stored_moods ) )
$return .= '<strong>Current Mood</strong>: ';
foreach( $stored_moods as $mood )
if ( ! empty( $stored_listening_to ) ) {
$return .= '<strong>Currently Listening To</strong>: ';
$return .= $stored_listening_to;
In Teil 2 werd ich dann hoffentlich genauer auf Alles eingehen können und mich auch dem eigentlichen Thema zuwenden.. ;)
http://codex.wordpress.org/Function_Reference/the_meta
http://codex.wordpress.org/Function_Reference/get_post_meta
http://codex.wordpress.org/Function_Reference/post_meta_Function_Examples
http://codex.wordpress.org/Custom_Fields