WordPress XML-Sitemap-Plugin mit XMLWriter – Kurzanleitung

Veröffentlichung 28. August 2018 @ 23:44
Letzte Änderung 29. August 2018 @ 15:27

Überblick

  • „Primitives“ Plugin zur Erstellung einer aktuellen XML-Sitemap-Datei für Beiträge und Seiten bei Veröffentlichung eines Beitrags / einer Seite
  • Nutzung der PHP-XMLWriter-Erweiterung zur Erzeugung eines standarkonformen XML-Schemas für das Sitemapprotokoll
  • Präfixe „self“ für PHP-Funktionen und „self-“ für Plugin-Verzeichnis und Plugin-Datei

Voraussetzungen

Netzwerk

  • Website https://wordpress.example.com

Software

  • WordPress 4.9.8 #https://wordpress.example.com/wp-admin/update-core.php

Ordner und Dateien

  • Installation /usr/share/wordpress/wp-content/plugins/self-xml-sitemap

Plugin-Verzeichnis anlegen

mkdir /usr/share/wordpress/wp-content/plugins/self-xml-sitemap

Plugin-Datei erstellen

<?php
/*
Plugin Name: SELF XML Sitemap
Description: Create updated XML sitemap file 'sitemap.xml' in main directory every time a page or post is published
Version: 2018-08-28
Author: Thomas Fabian
Author URI: https://www.fabiblog.de
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
*/
if (!function_exists ('selfCreateXmlSitemap'))
{
  function selfCreateXmlSitemap ()
  {
    // Get all pages and posts
    $args = ['numberposts' => -1, 'post_type' => ['page', 'post']];
    $posts = get_posts ($args);
    // Create XML sitemap file
    $xmlWriter = new XMLWriter ();
    $xmlFile = ABSPATH . 'sitemap.xml';
    $xmlWriter->openURI ($xmlFile);
    $xmlWriter->setIndent (true);
    $xmlWriter->startDocument ('1.0', 'UTF-8');
    $xmlWriter->startElement ('urlset');
    $xmlWriter->writeAttribute ('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
    foreach ($posts as $post)
    {
      setup_postdata ($post);
      $xmlWriter->startElement ('url');
      $xmlWriter->writeElement ('loc', get_permalink ($post->ID));
      $xmlWriter->writeElement ('lastmod', strstr ($post->post_modified, ' ', true));
      $xmlWriter->endElement ();
    }
    $xmlWriter->endElement ();
    $xmlWriter->endDocument ();
    $xmlWriter->flush ();
  }
  // Hook function selfCreateXmlSitemap to actions publish_page and publish_post
  add_action ('publish_page', 'selfCreateXmlSitemap');
  add_action ('publish_post', 'selfCreateXmlSitemap');
}
?>

Zugriffsrechte setzen

chown --recursive www-data:www-data /usr/share/wordpress/wp-content/plugins/self-xml-sitemap

Plugin aktivieren

https://wordpress.example.com/wp-admin/plugins.php
  SELF XML Sitemap - Aktivieren

Quellen

https://codex.wordpress.org/Writing_a_Plugin
https://developer.wordpress.org/plugins/
https://developer.wordpress.org/reference/
https://secure.php.net/manual/de/book.xmlwriter.php
https://www.sitemaps.org/protocol.html

Schreibe einen Kommentar