von

Vorherige und weitere Artikel eines Autors in WordPress anzeigen

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.

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 hatte machte ich mich 2009 mit r-evolve selbstständig und arbeite in Dresden.