WordPress Snippets

WordPress: Eine Sitemap.xml ohne Plugin erstellen

WordPress: Wie Du eine Sitemap.xml ohne Plugin erstellst

Die Sitemap.xml sorgt in Verbindung mit der Google Search Console für eine schnelle Indexierung Deiner Beiträge. 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, die Seiten und Deine Bilder 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. 5.xx
  • PHP-Version: inkl. PHP 7.xx

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

Andreas Hecht

Andreas Hecht

Er 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.

Das könnte auch interessant sein...

Das Perfmatters WordPress Performance Plugin macht dein WordPress raketenschnell

Auch Laien machen Ihre Website damit raketenschnell! Lies den Artikel dazu...

5 Kommentare Kommentar hinzufügen

  1. Schliesst dieser Code auch die Bilder ein?

    • 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.

      • Hansjörg Leichsenring

        31. Dezember 2016 um 11:34

        Super, vielen Dank und einen guten Rutsch ins Neue Jahr

        • Hansjörg Leichsenring

          31. Dezember 2016 um 11:35

          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.

Do NOT follow this link or you will be banned from the site!
Teilen
Teilen