Ich habe kürzlich meinen Blog mit entsprechenden Autor-Informationen ausgestattet, um in den Google-Suchergebnissen mit Bild und Namen aufzutauchen. Wer weiß, vielleicht spielt das ja irgendwann mal irgendeine Rolle^^ Man kann nie wissen.
Fakt ist, dass ich, um zu testen ob es funktioniert, das sogenannte „Test-Tool für strukturierte Daten“ ausprobiert habe (engl. rich snippet test). Soweit war da auch alles ok, nur ein Feld hat gefehlt und zwar „updated“. Ein kurzes Googleln brachte die Erkenntnis, dass Google ein Feld erwartet in dem steht, wann der entsprechende Beitrag das letzte mal geändert wurde. Möchte man einfach nur diesen ärgerlichen Fehler beseitigen, kann man einfach die Erstellungszeit mit als Zeit auszeichnen, an der zuletzt upgedated wurde. Wie das funktioniert wird hier beschrieben. Aber ich dachte mir: Das muss auch schöner gehen!
Zuerst muss man herausfinden, an welcher Stelle die Meta-Informationen der Beiträge generiert werden. Im oben verlinkten Artikel ist das in der functions.php der Fall. Beim Theme twentyfourteen ist das aber nicht so. Deshalb hab ich nach einer Zeichenkette gesucht, die ich kannte:
$ cd /pfad/zum/theme/
$ grep -rl "<span class="entry-date">" *
image.php
inc/template-tags.php
inc/widgets.php
Die Suche ergab 3 Dateien; die erste und die letzte kann man aber ausschließen. Also muss man in der Datei inc/template-tags.php suchen:
<?php
// Set up and print post meta information.
printf( '<span class="entry-date">
<a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a>
</span>
<span class="byline">
<span class="author vcard"><a class="url fn n" href="%4$s" rel="author">%5$s</a></span>
</span>',
esc_url( get_permalink() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
get_the_author()
);
?>
Hier sehen wir die Funktion, die die Meta-Informationen zusammenbaut. Nun muss man nur noch ein Feld hinzufügen:
// Set up and print post meta information.
printf( '<span class="entry-date">
<a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a>
</span>
<span class="updated" style="display:none">
<time datetime="%4$s" class="updated">%5$s</time>
</span>
<span class="byline">
<span class="author vcard"><a class="url fn n" href="%6$s" rel="author">%7$s</a></span>
</span>',
esc_url( get_permalink() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
get_the_author()
);
Bitte unbedingt beachten: Die Variablen müssen fortlaufend nummeriert werden. Das heißt, wo ursprünglich %4$s stand, muss dann in diesem Beispiel %6$s stehen. An diesen Stellen werden beim Ausgeben die nachstehenden dynamischen Strings ausgegeben.
Außerdem habe ich im Markup stehen, dass dieses Feld ausgeblendet wird. Wer auch selbst sehen möchte, wann der Artikel das letzte mal geupdated wurde, kann dieses Snippet natürlich nach seinen Vorstellungen abändern.