Für WordPress-Buchblogs: Bücher nach Autoren ausgeben

Lesezeit: 2 Minuten

Wenn du einen Wordpress-Blog betreibst und dort Bücher rezensierst, hast du vielleicht manchmal den Wunsch, noch weitere Bücher desselben Autors direkt am Beitrag anzuhängen. Ich habe dies für japanliteratur.net umgesetzt und zeige dir, wie du Rezensionen von Büchern desselben Autors miteinander verknüpfen kannst.

Ein Screenshot
So sieht die Umsetzung auf japanliteratur.net aus Bild Vergrößern

1. Autoren vertaggen

Die Voraussetzung ist, dass du deinen Artikeln in WordPress Tags zuordnest. Für den Autor Ryu Murakami sollte überall „Ryu Murakami“ hinterlegt sein:

Benutzerdefinierte Felder in WordPress
Schlagwörter, die für den Beispielartikel vergeben wurden.

2. Benutzerdefinierte Felder in WordPress nutzen

Benutzerdefinierte Felder in WordPress
Benutzerdefinierte Felder in WordPress Bild Vergrößern

Ich nutze in WordPress viele verschiedene benutzerdefinierte Felder, beispielsweise für die bibliografischen Angaben. Für die Verknüpfung der Autoren legst du das Feld „autor_link“ an und gibst hier den Tag-Slug ein – das ist die URL, unter der der Tag erreichbar ist. Beim Tag von Ryu Murakami beispielsweise sind alle vertaggten Bücher unter tag/ryu-murakami/ zu finden, also setze ich in das Feld ryu-murakami ein.

3. Code einbauen

Der Code wird nun auf der content.php eingebaut:


     <?php
        if ( get_post_meta($post->ID, 'autor_link', true) ) {
          echo "<h3>Weitere Bücher vom Autor</h3>";
          $query = new WP_Query( array( 'tag' => get_post_meta($post->ID, 'autor_link', true) ) );

          if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {
              $query->the_post();
              if( $post->ID == $do_not_duplicate ) continue; ?>

                <div class="similar-books">
                  <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
                </div>

                <p>
                  <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                </p>
            <?php }
          } 

          wp_reset_postdata();
        }
      ?>

Und so funktioniert es im Detail:

<?php
if ( get_post_meta($post->ID, 'autor_link', true) ) {

Zunächst wird abgefragt, ob das Feld autor_link beim jeweiligen Artikel überhaupt gefüllt ist. Wenn es nicht gefüllt ist, erfolgt auch keine Abfrage auf ähnliche Artikel.

$query = new WP_Query( array( 'tag' => get_post_meta($post->ID, 'autor_link', true) ) );

Dann erfolgt ein Query auf alle Artikel, die den Tag haben, der zuvor innerhalb von autor_link definiert wurde. Das ist notwendig, da ein Artikel auch noch viele andere Tags haben kann, die an dieser Stelle natürlich nicht für den Query herangezogen werden sollen.

if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
if( $post->ID == $do_not_duplicate ) continue; ?>

Zum Schluss wird die eigentliche Schleife gestartet, die die Posts ausgibt. Hier wird auch ausgeschlossen, dass der aktuelle Artikel im Query enthalten ist.

<div class="similar-books">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
</div>

<p>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</p>

Zum Schluss kannst du in diesem Bereich noch bestimmen, was ausgegeben werden soll. Im Beispiel wird das Artikelbild (the_post_thumbnail()) und ein Link mit dem Titel des Artikels (the_title()) ausgegeben.

Profilbild
Autorin: Friederike

Hallo, ich bin Friederike. Ich entwickle Websites und schreibe auf krempin.it darüber. Außerdem mag ich Japanische Literatur und Retro-Videospiele.