von

Vorherige und weitere Artikel eines Autors in WordPress anzeigen

Kommentarsprechblase
2
Kommentare

twittericon
evaluationsicon
Fanden Sie diesen Artikel hilfreich? Ja | Nein

Um in einem WordPressartikel automatisch den vorherigen, nächsten, letzten, ersten oder einfach nur weitere Artikel des Autors anzeigen zu lassen, ist im Grunde extrem leicht. Als erstes brauchen wir einen Array ($authorpostsammlung), der die IDs aller Artikel eines Autors speichert:

$authorpostsammlung = array();
$aktuelleposition=0;
$authors_posts = get_posts( array(
    'author' => $authordata->ID,
    'posts_per_page' => 500,
    'orderby' => date,
    'order' => ASC
) );

foreach ( $authors_posts as $authors_post ) {
    $authorpostsammlung[]=$authors_post->ID;
    if ($authors_post->ID!=$iddesaktuellenposts) {
        $aktuelleposition++; //
    } else {
        $treffer = $aktuelleposition; // Position der ID des Ausgangsartikels
    }
}

Die for-Schleife darunter gibt dem Array alle IDs der Posts des Autors und schneidet mit, an welcher Stelle sich die ID des aktuellen Posts befindet ($treffer).

 

Um einen Link zum vorhergehenden oder nächsten Artikel des Autors anzuzeigen, muss man lediglich eine Stelle im Array vor oder weiter gehen:

echo '<a href="'.get_permalink($authorpostsammlung[$treffer-1]).'">';
echo get_the_title($authorpostsammlung[$treffer-1]); // vorheriger Artikel
echo '</a>';

echo '<a href="'.get_permalink($authorpostsammlung[$treffer+1]).'">';
echo get_the_title($authorpostsammlung[$treffer+1]); // nächster Artikel
echo '</a>';

Ähnlich leicht gestaltet es sich, zum ersten oder letzten Artikel des Autors zu springen:

echo '<a href="'.get_permalink($authorpostsammlung[0]).'">';
echo get_the_title($authorpostsammlung[0]); // erster Artikel
echo '</a>';

echo '<a href="'.get_permalink(end($authorpostsammlung)).'">';
echo get_the_title(end($authorpostsammlung)); // letzter Artikel
echo '</a>';

 

Zusammengefasst (für Freunde von Copy & Paste ;) ) sieht es wie folgt aus:

$iddesaktuellenposts = $post->ID;
$authorpostsammlung = array();    
$aktuelleposition=0;  
     
$authors_posts = get_posts( array( 
    'author' => $authordata->ID, 
    'posts_per_page' => 500, 
    'orderby' => date, 
    'order' => ASC
) );  

foreach ( $authors_posts as $authors_post ) {   
    $authorpostsammlung[]=$authors_post->ID;  
    if ($authors_post->ID!=$iddesaktuellenposts) {
        $aktuelleposition++;
    } else {
        $treffer = $aktuelleposition;
    }     
} 

if ($authorpostsammlung[$treffer-1]) { 
    echo 'Vorheriger Artikel: <a href="'.get_permalink($authorpostsammlung[$treffer-1]).'">'.get_the_title($authorpostsammlung[$treffer-1]).'</a>';
} 
if ($authorpostsammlung[$treffer+1]) { 
    echo 'Nächster Artikel: <a href="'.get_permalink($authorpostsammlung[$treffer+1]).'">'.get_the_title($authorpostsammlung[$treffer+1]).'</a>'; 
} 
if (($authorpostsammlung[$treffer+1])!=(end($authorpostsammlung)) && ($authorpostsammlung[$treffer])!=(end($authorpostsammlung))) { 
    echo 'Letzter Artikel: <a href="'.get_permalink(end($authorpostsammlung)).'">'.get_the_title(end($authorpostsammlung)).'</a>';
}                 

Die If-Klauseln sehen auf den ersten Blick etwas verdreht aus, sorgen aber insgesamt dafür, dass keine Dopplung beim nächsten und letzten Artikel auftreten, falls es sich dabei um den selben Artikel handeln sollte. Have Fun.

Steve Brauer

Ich bin ein diplomierter Wirtschaftsinformatiker und meine Tätigkeiten im Onlinemarketing begannen 2008 mit dem Management von Webprojekten bei der Schach&Matt GmbH. Nachdem ich Feuer für alle Facetten der Branche gefangen habe machte ich mich 2009 mit r-evolve selbstständig und arbeite seit 2013 für die Werbeagentur Narciss & Taurus in Dresden.

2 Gedanken zu „Vorherige und weitere Artikel eines Autors in WordPress anzeigen

  1. Pete sagte am :

    Es müsste doch auch möglich sein, nach diesem Schema die 5 letzten bzw. 5 neueren Posts nach einem Artikel anzuzeigen.

    Suche seit ca. einer Woche nach so einem Code, der die 5 Artikel ausgibt die vor/nach dem aktuellen Artikel geschrieben wurde. Kennst du da eine Möglichkeit?

    Antworten
    1. Steve BrauerSteve Brauer Beitragsautor sagte am :

      Hi Pete,

      ja natürlich gibt es diese Möglichkeit. Ich glaube die einfachste Variante wäre meine Zusammenfassung zu kopieren und diesen Ausschnitt:

      if ($authorpostsammlung[$treffer-1]) {
      echo ‘Vorheriger Artikel: ‘.get_the_title($authorpostsammlung[$treffer-1]).’‘;
      }

      so zu erweitern:

      if ($authorpostsammlung[$treffer-5]) {
      echo ‘Vorheriger Artikel: ‘.get_the_title($authorpostsammlung[$treffer-5]).’‘;
      }
      if ($authorpostsammlung[$treffer-4]) {
      echo ‘Vorheriger Artikel: ‘.get_the_title($authorpostsammlung[$treffer-4]).’‘;
      }
      if ($authorpostsammlung[$treffer-3]) {
      echo ‘Vorheriger Artikel: ‘.get_the_title($authorpostsammlung[$treffer-3]).’‘;
      }

      Hilft Dir das weiter? Das ist jetzt wirklich nur Quick und Dirty gelöst, müste aber funktionieren. Gib ruhig bescheid falls nicht, ich glaube in den kommenden Wochen werde ich mal eine abgewandelte Form von meinem Skript zusammenschreiben, die die letzten und die nächsten aktuelleren 5 Artikel ausgibt. Vielen Dank für die Inspiration. :)

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.