HARALD MELCHER

Zentrales Stylesheet (style.css)

Jedes WordPress-Theme hat ein zentrales Stylesheet in style.css. Es bestimmt die optische Darstellung der Seiteninhalte. WordPress sucht diese Datei im Stammverzeichnis des Themes.

Eigenschaften des Themes wie Name, Autor und weitere stehen in einem Kommentar am Anfang des zentralen Stylesheets. Beim Theme Twenty Nineteen sieht das folgendermaßen aus:

/* 
Theme Name: Twenty Nineteen 
Theme URI: https://github.com/WordPress/twentynineteen 
Author: the WordPress team 
Author URI: https://wordpress.org/ 
Description: A new Gutenberg-ready theme. Requires at least: WordPress 4.9.6 
Version: 1.0 
License: GNU General Public License v2 or later 
License URI: LICENSE 
Text Domain: twentynineteen 
Tags: custom-background, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready
*/

Folgende Eigenschaften sind vorgesehen:

  • Theme Name
    Name des Themes – darf Leerzeichen enthalten
  • Author
    Die Autorin oder Organisation, die das Theme erstellt hat. Falls sie einen wordpress.org Benutzernamen hat, gehört er hier hin
  • Author URI
    Verweis auf die URI der Autorin oder der Organisation, die das Theme erstellt hat
  • Description
    Eine Kurzbeschreibung des Themes
  • Version
    Versionsnummer des Themes. WordPress erkennt durch Vergleich mit der Version auf wordpress.org, ob es das Theme aktualisieren sollte
  • License
    Die Art der Lizenz des Themes
  • License URI
    Veweis auf den Text der Lizenz des Themes
  • Text Domain
    Hilfestellung bei der Übersetzung von Inhalten
  • Tags
    Worte oder Phrasen, die beim Stöbern im Theme-Verzeichnis von wordpress.org dabei helfen, das Theme durch Filtern schneller zu finden
  • Domain Path
    Hilft WordPress, Übersetzungen von Theme-Texten auch dann zu finden, wenn das Theme abgeschalten ist. Voreinstellung ist /languages

Zentrale WordPress-Theme-Dateien

Um ein Thema im WordPress-Themenkatalog veröffentlichen zu können, muss es vier grundlegende Dateien beinhalten:

  1. style.css
    Diese Datei ist das zentrale Stylesheet des Themas. An dieser Datei erkennt WordPress, dass es sich um die Dateien in einem Theme-Verzeichnis überhaupt um ein Thema handelt. Sie enthält u.a. den Themen-Namen, den Autor und die Versionsnummer.
  2. index.php
    Diese Datei ist die zentrale Vorlagedatei (Template). Wenn es nur diese Datei gibt, bestimmt sie das Aussehen aller von WordPress erzeugten Seiten (außer im Fall einer statischen Eingangsseite). Daher muss sie dann auch die komplette Funktionalität aller Seiten abdecken. Bei stark wechselnden Aussehen der Einzelseiten ist das Verteilen der Funktionalität auf weitere Template-Dateien sinnvoll.
  3. screenshot.png
    In der WordPress-Themes-Übersicht zeigt dieses Bild eine Vorschau, wie das Theme aussehen kann. WordPress nutzt dieses Bild auch für den zentralen Themenkatalog, wenn das Theme veröffentlicht ist. Die Maximalgröße des Bildes ist 1200×900 Pixel.
  4. comments.php
    WordPress nutzt diese Vorlage (Template), wenn es Kommentare anzeigt. Sie sollte Kommentare von Autoren und Nutzern anzeigen sowie einem Verlauf verschiedener Kommentare folgen können. Diese Vorlage ist zum Veröffentlichen eines Themes von Belang. Bei Themes ohne Kommentaren oder bei privaten Themes spielt sie keine Rolle.

Die zentralen Dateien eines Themes müssen im Hauptverzeichnis des Themes liegen. Bei aufwändigeren Themes empfiehlt sich das Verteielen weiterer eingefügter Dateien auf Unterverzeichnisse, zum Beispiel bei Bildern, Skripten oder Vorlagen-Schnipseln.

Die beiden Dateien style.css und index.php allein reichen schon aus, damit WordPress das Theme erkennt und (mit einem leeren Vorschaubild) anzeigt.

WordPress-Sicherheit erhöhen

WordPress PHP-Skripte rufen nach Start auch die PHP-Skripte der Themes und die Plugin-Skripte auf. Der Aufruf dieser Skripte erfolgt also von anderen Skripten aus und nicht durch Zugriff von Browsern auf die Skript-URLs. Ein direkter Aufruf dieser Skripte ist im Normalfall nicht vorgesehen, wobei es einzelne Themes and Plugins gibt, die diesen Aufruf nutzten könnten, z.B. zum Hochladen von Formulardaten – wofür WordPress eigentlich standardisierte und bessere Möglichkeiten hat.

Direkte Ausführung von Skripten in Unterverzeichnissen verbieten

Jedes Verzeichniss kann eine Datei .htaccess enthalten, die der jeweilig eingesetzte Webserver unter anderem für die Rechteverwaltung des aktuellen Verzeichnisses und seiner Unterverzeichnisse nutzt.

Ist die .htaccess-Datei im Verzeichnis /wp-includes/themes untergebracht, verhindert sie das direkte Ausführen von PHP-Code in Themes.

Direkte Ausführung von Plugin-Skripten sperrt die .htaccess-Datei im Verzeichnis /wp_content/plugins.

Das Vorgehen ist je nach Webserver etwas unterschiedlich:

Apache Webserver

Der folgende Code im Verzeichnis von Themes oder Plugins sperrt die direkte Ausführung von Skripten beim Apache Webserver ab Version 2.4:

# Kein direkter Zugriff auf *.php files 
# in diesem Ordner und Unterordnern

<FilesMatch \.php$> 
   Require all denied 
</FilesMatch>

nginx Webserver

Dieser Code sperrt die direkte Ausführung von Skripten beim nginx Webserver:

# Kein direkter Zugriff auf *.php files 
# in diesem Ordner und Unterordnern
location ~ (^/wp-includes/plugins/.+\.php|^/wp-includes/themes/.+\.php) { 
   return 444; 
}