Auf Deutsch, Coding, Wordpress

Für Buchblogs: Bibliografien zu einem Autor ausgeben

Gestern hatte ich erklärt, wie ihr über eine Schlagwortausgabe in einem Buchblog weitere Bücher eines Autors ausgeben könnt. Die Schlagworte kann man aber noch weiter verwenden, und zwar für eine automatische Bibliografie zum Autor.

Warum die Standardabfrage nicht für Bibliografien gemacht ist

Über die Verschlagwortung einzelner Artikel kann man eigentlich ganz einfach eine Bibliografie erstellen: So tauchen alle Bücher, die ich unter „Haruki Murakami“ verschlagwortet habe, auf einer Seite auf, die das URL-Schema „http://meinedomain.de/?tag=haruki-murakami“ hat. Die Bibliografie generiert sich also automatisch von selbst. Allerdings werden diese Einträge nach Erstellungsdatum geordnet ausgegeben. So kann eine Liste dann beispielsweise so aussehen:

Die Abfrage dazu in tag.php (liegt im Theme-Ordner) sieht dann so aus:

<h2><?php single_tag_title(); ?> </h2>
<?php /* The loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></p>
<?php endwhile; ?>

Ich möchte nun aber noch ein Erscheinungsdatum hinzufügen – schließlich soll es ja eine richtige Bibliografie werden, die einen chronologischen Überblick über das Werk des Autors gibt. Dazu lege ich ein Custom Field „erscheungsjahr“ unter zu jedem Artikel an, den ich mit einem Autorennamen verschlagwortet habe (wie ihr dieses anlegt, hatte ich ebenfalls im letzten Artikel erklärt). Damit das Erscheinungsjahr nun auch angezeigt wird, füge ich innerhalb des Loops eine Zeile hinzu:

<?php echo get_post_meta($post->ID, 'erscheinungsjahr_japan', true); ?>

Nun gibt mir WordPress folgende Liste aus:

Haruki Murakami

2004: After Dark

1988: Tanz mit dem Schafsmann

1987: Naokos Lächeln

Die Liste ist nicht chronologisch geordnet, da WordPress die Artikel nach Erstellungsdatum ausgibt, das heißt After Dark ist der neueste Artikel. Für die Tags möchte ich aber eine chronologische, also hier numerische Ordnung nach dem Custom Field „erscheinungsjahr“. Deshalb muss die Abfrage etwas umgeschrieben werden.

Eine chronologische Bibliografie erstellen

Die Abfrage in tag.php muss also durch folgenden Code ersetzt werden:

<h2><?php single_tag_title(); ?></h2>

<?php if ( tag_description() ) : // Show an optional tag description ?>
<?php echo tag_description(); ?>

<?php endif; ?>

<?php
query_posts( $query_string . '&orderby=meta_value_num&meta_key=erscheinungsjahr_&order=ASC' );
while ( have_posts() ) : the_post(); ?>

<p><?php echo get_post_meta($post->ID, 'erscheinungsjahr_japan', true); ?>: <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></p>

<?php
endwhile;
wp_reset_query();
?> 

Die Anzeige ist nun chronologisch:

Haruki Murakami

1987: Naokos Lächeln

1988: Tanz mit dem Schafsmann

2004: After Dark

Erweiterte Optionen

Wollt ihr noch eine Autorenbiografie hinzufügen, könnt ihr einfach zum Schlagwort eine Beschreibung hinzufügen. Außerdem ist es möglich, Seiten zu bestimmten Autoren beziehungsweise Tags individuell zu gestalten. Kopiert dazu einfach „tag.php“ und benennt sie um ind „tag-schlagwort.php“ beziehungsweise „tag-haruki-murakami.php“. Nun könnt ihr nur für dieses eine Schlagwort ein eigenes Template erstellen!

Wer es noch einmal ausführlich nachlesen möchte:

Standard