Auf der Website meiner Band Road42 (road42-band.de), die auf WordPress läuft, habe ich einen neuen Custom Post Type hinzugefügt, um unsere Termine, also kommende und vergangene Auftritte, besser verwalten und darstellen zu können. Ziel war es, eine übersichtliche Aufstellung aller vergangenen und zukünftigen Termine zu erstellen, wobei jeder Termin anklickbar ist und zu einer detaillierten Einzelansicht führt. Diese Umsetzung funktioniert hervorragend, jedoch bin ich dabei auf ein paar SEO-relevante Herausforderungen gestoßen. Unter anderem die Handhabung von WordPress und dem Canonical Tag.

Das Problem mit get_permalink() und zukünftigen Terminen

Während der Implementierung fiel mir auf, dass die WordPress-Funktion get_permalink() bei zukünftigen Beiträgen nicht den endgültigen, lesbaren Permalink ausgibt, sondern einen temporären Link mit URL-Parametern. Dieser temporäre Link kann aus SEO-Sicht problematisch sein, da er potentiell zu Duplicate Content führt. Das bedeutet, dass dieselbe Seite theoretisch unter zwei verschiedenen Links erreichbar ist. In einem meiner früheren Beiträge habe ich dieses Problem bereits ausführlich erklärt.

WordPress Header Wallpaper Permalink Future Post
WordPress Header Wallpaper Permalink Future Post
WordPress Wallpaper Future Permalink – Foto by Alex Wagner

WordPress – richtigen Permalink zu geplantem Post in der Zukunft

Als ich neulich für die Homepage einer meiner Bands ein Template zur Darstellung von Terminen / Events erstellt habe, bin ich auf ein Problem gestoßen, an das ich zu beginn absolut nicht gedacht habe. Warum muss ich geplante Beiträge überhaupt…

Der Googlebot und der Canonical Tag

Trotz meiner Maßnahmen zur Vermeidung von Duplicate Content habe ich durch das Tracken der Googlebot-Zugriffe (WordPress – Googlebot Aufrufe / Zugriffe tracken) festgestellt, dass der Googlebot trotzdem die temporären Links mit URL-Parametern crawlt. Bei näherer Betrachtung stellte sich heraus, dass das Yoast SEO Plugin, welches auf meiner Website aktiv ist, bei Beiträgen mit einem zukünftigen Datum den Canonical Tag ebenfalls mit den URL-Parametern versieht. Dies kann wiederum dazu führen, dass der Googlebot diese Parameter-Links findet und crawlt, was die Duplicate-Content-Problematik erneut aufwirft.

Die Lösung: Anpassung des WordPress Canonical Tags

Um dieses Problem zu beheben, habe ich einen Code geschrieben, der den Canonical Tag von Yoast SEO für zukünftige Beiträge (Post Status = „future“) anpasst. Dieser Code überschreibt den Canonical Tag mit dem korrekten, endgültigen Permalink, anstatt den temporären Link zu verwenden.

Einfach in die functions.php des aktiven Themes einfügen.

//canonical
add_filter('wpseo_canonical', 'custom_canonical_for_future_posts');
function custom_canonical_for_future_posts($canonical) {
    if (is_singular('gigs')) { // Ersetze 'gigs' durch den Slug deines Custom Post Types
        global $post;

        // Überprüfen, ob der Beitrag den Status 'future' hat
        $post_status = get_post_status($post->ID);

        if ($post_status === 'future') {
            $canonical = get_permalink_alternative($post->ID);
        }
    }
    return $canonical;
}

Die Funktion get_permalink_alternative() habe ich in dem oben erwähnten Beitrag schon einmal vorgestellt. Seitdem habe ich sie ein bisschen angepasst, was sie schlanker und eleganter gemacht hat. Deswegen schreibe ich sie euch hier noch einmal mit rein.

function get_permalink_alternative($post_id){

    global $post;
    $post_status = get_post_status($post_id);

    if($post_status === 'future'){
        $permalink = home_url('/termine/' . $post->post_name . '/');
    }else{
        $permalink = get_permalink($post_id);
    }

    return $permalink;
}

Fazit

Mit diesem Code wird der Canonical Tag für zukünftige Auftritte korrekt gesetzt, wodurch die Gefahr von Duplicate Content minimiert wird. Es ist wichtig, solche kleinen Details zu beachten, um die SEO-Performance der Website zu optimieren und sicherzustellen, dass Inhalte korrekt von Suchmaschinen erfasst werden.

Ich hoffe, dieser Beitrag hilft anderen WordPress-Nutzern, ähnliche SEO-Probleme zu vermeiden. Falls ihr selbst ähnliche Herausforderungen hattest oder weitere Fragen dazu hast, hinterlasse gerne einen Kommentar!