Post navigation

WordPress Snippets · · 5 Kommentare

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

Abonniere meinen Newsletter

Melde Dich für meinen Newsletter "WordPress & Bloggen" an und verpasse keinen Artikel. Als Dankeschön bekommst Du Gratis meine nützliche Checkliste:
»12 Dinge, die Du vor einem Theme-Wechsel beachten solltest«.

Andreas Hecht

ist WordPress-Entwickler, freier Journalist und Autor. Er schreibt für ein bekanntes deutsches Webdesign Magazin und ist nebenbei Autor mehrerer E-Books zu den Themen Lebenshilfe, Marketing und WordPress.

5 Meinungen 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.