Post navigation

WordPress: Wie Du eine Sitemap.xml ohne Plugin erstellst

Die Sitemap.xml sorgt in Verbindung mit der Google Search Console (ehemals Webmaster Tools) für eine schnelle Indexierung der Beiträge Deiner Website. Bisher musstest Du ein Plugin installieren, um eine sitemap.xml zu generieren. Mit diesem Code kannst Du Dir das Plugin sparen.

Einige wenige Zeilen Code reichen bereits aus, um eine Sitemap für die Beiträge und die Seiten zu erstellen. Mit einigen kleinen Änderungen kannst Du auch Deine Custom Post Types in die Sitemap einfügen.

Update: Die Sitemap wird nun für die Beiträge, die Seiten und die Bilder erstellt.

Sitemap.xml erstellen ohne Plugin. Der Code

  • WordPress Version: inkl. 4.7
  • PHP-Version: inkl. PHP 7

Kopiere den folgenden Code in die functions.php Deines aktiven Themes hinein:

<?php

// Ab hier kopieren
/**
 * Eine eigene sitemap.xml ohne Plugin erstellen
 * @author Andreas Hecht
 */
function ah_create_sitemap() {
  $sitemap_posts = get_posts(array(
    'numberposts' => -1,
    'orderby' => 'modified',
    'post_type'  => array('post','page', 'attachment'), // Deine Custom Post Types hier einfügen (z.B. Portfolio)
    'order'    => 'DESC'
  ));

  $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
  $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  foreach($sitemap_posts as $post) {
    setup_postdata($post);

    $postdate = explode(" ", $post->post_modified);

  	$sitemap .= '<url>'.
      '<loc>'. get_permalink($post->ID) .'</loc>'.
      '<lastmod>'. $postdate[0] .'</lastmod>'.
      '<changefreq>monthly</changefreq>'.
    '</url>';
  }
  $sitemap .= '</urlset>';

  $fp = fopen(ABSPATH . "sitemap.xml", 'w');
  fwrite($fp, $sitemap);
  fclose($fp);
}
add_action('publish_post', 'ah_create_sitemap');
add_action('publish_page', 'ah_create_sitemap');

Wenn alles funktioniert hat, dann solltest Du Deine Sitemap unter der folgenden URL erreichen können:

http://deinewebsite.de/sitemap.xml

entwickelt WordPress-Websites und bietet dir einen Website Sicherheit Service und einen Performance Service für deine Website. Außerdem ist er Spezialist für Onpage SEO und bringt Deine Website in die Top-Suchergebnisse von Google.

5 Kommentare zu “WordPress: Wie Du eine Sitemap.xml ohne Plugin erstellst

    • Hallo,

      danke Dir für Deinen Kommentar! Der Code erstellt eine sitemap.xml für die Beiträge und Seiten, nicht für die Mediathek. Sollen die Bilder komplett indexiert werden, muss die Zeile mit den Post-Types noch um »attachment« erweitert werden.

      Update: Ich habe den Code nun erweitert, die Bilder werden in die Sitemap aufgenommen.

        • Muss doch noch mal nachfragen: In der functions wird die Funktion doch jedes Mal bei Seitenaufruf angestoßen. Würde es nicht mehr Sinn in einer eigenen php Datei machen, die mittels Cron 1x am Tag aufgerufen wird?

        • Ja, das wäre grundsätzlich schon sinnvoller. Die meisten Menschen wissen leider nicht, wie man einen Cronjob aufsetzt, das würde auch den Artikel sprengen. Doch wenn das kein Problem für Dich ist, dann mache es…

          Auch Dir einen guten Rutsch und ein frohes neues Jahr!

Schreibe einen Kommentar

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.