XML Sitemap (ohne Plugin)

Inhaltsverzeichnis

XML Sitemap generieren

Zur sauberen und korrekten Suchmaschinenoptimierung gehört meist auch eine XML Sitemap. Sicherlich ist diese für viele kleine Blogs nicht unbedingt notwendig, doch meist sorgt eine XML Sitemap in Wordpress dann eben doch dafür, dass Google Beiträge deutlich schneller als ohne indexiert.

Mit Sitemap dauert es oft nur einen Moment, ohne kann es schon einmal deutlich länger dauern bis ein Artikel in den Suchergebnissen auftaucht. Das ist interessant und gut zu wissen, doch leider sind Sitemaps in Wordpress eben so eine Sache für sich. SEO Plugins die automatisch eine Sitemap erstellen, sind meist aufgeblähte Schwergewichte, die einen Blog zu sehr ausbremsen. Auch Wordpress Sitemap Plugins sind zwar gut, aber nicht minimalistisch genug, um wirklich Effizient zu arbeiten.

Also braucht es eine Lösung ohne Plugin, ein kleines Snippet welches beim veröffentlichen oder bearbeiten eines Artikels automatisch eine XML Sitemap generiert, oder die vorhandene aktualisiert. Kein Problem!

Folgendes in die Functions.php eures Theme einfügen:

add_action("publish_post", "create_sitemap"); add_action("publish_page", "create_sitemap"); function create_sitemap() { $postsForSitemap = get_posts( array( 'numberposts' => -1, 'orderby' => 'modified', 'post_type' => array( 'post', 'page' ), 'order' => 'DESC' ) ); $sitemap = '<?xml version="1.0" encoding="UTF-8"?>'; $sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; foreach( $postsForSitemap as $post ) { setup_postdata( $post ); $postdate = explode( " ", $post->post_modified ); $sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>' . get_permalink( $post->ID ) . '</loc>' . "\n\t\t" . '<lastmod>' . $postdate[0] . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n"; } $sitemap .= '</urlset>'; $fp = fopen( ABSPATH . "sitemap.xml", 'w' ); fwrite( $fp, $sitemap ); fclose( $fp ); }

XML Sitemap in Wordpress

Die durch den Code oben automatisch generierte XML Sitemap von Wordpress, ist valide und Google nimmt sie problemlos an. Mit dem minimalen Code ist die XML Sitemap innerhalb von Wordpress außerdem gnadenlos performant umgesetzt, denn noch minimaler und schneller ist eine vernünftige Sitemap wohl kaum realisierbar.

Sobald ihr eine Seite oder einen Beitrag veröffentlicht, oder mit einem Update erneuert, aktualisiert sich auch automatisch die XML Sitemap, was natürlich nicht beim einfachen Abspeichern eines Artikels passiert. Das wäre zwar auch umsetzbar, aber wenig sinnvoll, da die Sitemap ja nur bei neuen Inhalten aktualisiert werden soll und nicht ständig, denn das würde den Server dann doch etwas zu stark belasten.

Bei mir lief diese Lösung auf Blogs mit mehreren tausend Artikeln völlig problemlos und einwandfrei. Google stufte die Sitemap als valide ein und sie entspricht außerdem den Google Webmaster Guidelines und wird dementsprechend von der Suchmaschine honoriert. Eine einfache, effektive und extrem minimalistische Lösung, um innerhalb von Wordpress eine XML Sitemap zu erstellen und zwar komplett ohne Plugin.

Christian Pust
WordPress & Onlinemarketing Experte mit über 15 Jahren Erfahrung. Entwickler & CEO von Trackboxx – der Google Analytics Alternative.

9 Antworten

  1. Gut zu wissen! Allerdings scheint die Sitemap über Dein Snippet nur neue Artikel und Seiten zu erfassen. Wie lassen sich denn bereits existierende Posts einbinden? Und was ist mit Custom Post Types?

    1. Hi Sascha, das Snippet erstellt ausschließlich für neue Artikel eine Sitemap, also ist somit eine Option für neue Seiten. Bezüglich deiner anderen beiden Punkte, dafür müsste man einen stark erweiterten Code schreiben was über den Kommentarbereich hier im Blog hinaus geht – also was wir für Leser hier “liefern” und was nicht 🙂

  2. kann man das so erweitern, dass auch eine neue XML geschossen wird wenn eine Seite offline geht? Sonst steht in der Sitemap eine Seite, die doch nicht existiert und das dürfte Google eher nicht positiv sehen…

  3. Ich denke ich habe es umgebaut, so dass die Sitemap geschossen wird, wann immer etwas veröffentlicht oder offline genommen wird:

    function create_sitemap($new_status, $old_status, $post){
    if ( $old_status == $new_status || $old_status != ‘publish’ && $new_status != ‘publish’ )
    return;
    …dein XMLCode…
    add_action( ‘transition_post_status’, ‘create_sitemap’, 10, 3 );

  4. Hallo Christian,
    ich benötige etwas mehr Info, um das light XML Sitemap” zum laufen zu bringen. Genau das was ich benötige! Viele Dank hierfür!
    Muss ich Code in das File “./wp-includes/functions.php” einbetten (richtiges File und Position des Code’s egal?) und über ein Hyperlink einfach mit “sitemap.xml” aufrufen? Mir ist die Funktionsweise, wie du sieht nicht ganz verständlich.

    1. Hallo Conrad,
      im child theme in die functions.php die obige Zeile einfügen. Dann wird bei Anlegen einer neuen Seite die sitemap ergänzt.
      Was die Ur-Sitemap angeht, habe ich mir mit https://www.xml-sitemaps.com/ geholfen un die Ur-site-map in das Wurzelverzeichnis per Filiezilla geschoben.

Schreibe einen Kommentar

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

Das könnte dich auch interessieren

Du benötigst Unterstützung bei deinem WordPress Projekt?

Dein Ansprechpartner
Christian