Wenn es um die Sicherheit geht, wissen wir, wie wichtig es ist, die WordPress-Installationen (Core, Themes und Plugins) regelmäßig zu aktualisieren, und wie lange der Upgrade-Prozess für uns dauern könnte, besonders wenn wir eine gute Anzahl von Plugins installiert haben. Es wird allgemein empfohlen, diese Schritte zu befolgen:

  1. Backup von Dateien und Datenbanktabellen
  2. Plugins deaktivieren
  3. Aktualisieren
  4. Aktivieren der Plugins eins nach dem anderen
  5. Überprüfe die Webseite

Es könnte eine mühsame Aufgabe für eine einzelne Webseite sein, und es könnte eine nervige und komplexe Arbeit sein, wenn wir fünf, zehn oder mehr Webseiten aktualisieren müssen.

Mit dem speziellen Zweck, die Installationssicherheit zu verbessern und die Verwaltung der Webseite zu erleichtern, hat WordPress 3.7 automatische Updates eingeführt. Standardmäßig ist diese coole Funktion für Minor-Releases (d.h. Wartungs- und Sicherheitsversionen) und Übersetzungsdateien aktiviert, aber es ist möglich, jede Art von Updates anzupassen. In diesem Beitrag schauen wir uns also an, wie wir den Aktualisierungsprozess automatisieren können, sobald eine neue Version des WordPress-Cores, Themes oder Plugins veröffentlicht wird. Lasst uns tief in die automatischen WordPress Updates eintauchen!

WordPress automatische Updates
WordPress automatische Updates

Index für automatische Updates

WordPress Automatische Updates

Es gibt vier Typologien von Updates und WordPress automatische Updates:

  1. Core-Updates
  2. Plugin Aktualisierungen
  3. Theme Updates
  4. Aktualisierungen der Übersetzungsdateien

Die Kernaktualisierungen sind in drei Subtypologien unterteilt:

  1. Core-Entwicklung (nur für Entwicklungsinstallationen verfügbar)
  2. Kleinere Kern-Updates (Wartung und Sicherheit) – bei stabilen Installationen standardmäßig aktiviert
  3. Wichtige Kern-Updates

WordPress ermöglicht es Ihnen, den Aktualisierungsprozess für jede dieser Typologien zu automatisieren, indem es zwei wp-config.php-Konstanten und eine gute Anzahl von API-Filtern bereitstellt.

Steuerung von Hintergrund-Updates durch wp-config.php

WordPress bietet eine Reihe von wp-config.php-Konstanten, mit denen wir automatische Aktualisierungen steuern können. Wenn AUTOMATIC_UPDATER_DISABLED auf true gesetzt wird, wird jede Art von automatischem Upgrade deaktiviert:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE ermöglicht uns die Kontrolle vonCore-Updates (Minor-, Major- und Entwicklungsversionen). Diese Konstante kann wie folgt definiert werden:

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables minor updates:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

In Entwicklungsinstallationen wird WP_AUTO_UPDATE_CORE standardmäßig auf true gesetzt. In stabilen Installationen ist es auf minor voreingestellt.

Der Vollständigkeit halber sollte ich eine zusätzliche Konstante erwähnen, die definiert werden kann, um automatische Aktualisierungen zu deaktivieren. Wenn es jedoch auf true gesetzt wird, werden alle Dateibearbeitungen, sogar Themes und Plugin-Installationen und manuelle Aktualisierungen deaktiviert.

define( 'DISALLOW_FILE_MODS', true );

Stattdessen könntest du es vorziehen, die Konstante DISALLOW_FILE_EDITSzu definieren, was den Datei-Editor deaktivieren würde, aber die Installations- und Update-Funktionen sicher hält.

Verwandte Anleitung: wp-config.php File – An In-Depth View on How to Configure WordPress

Steuerung von Hintergrund-Updates durch API-Filter

Die Konfigurationskonstanten bieten eine allgemeine Möglichkeit, Auto-Updates zu aktivieren oder zu deaktivieren. Aber WordPress bietet eine Reihe von Filtern, die eine tiefere Kontrolle über jede Art von Updates gewähren.

Hinweis: Filter sollten innerhalb von Plugins verwendet werden, und „must use plugins“ sind eine gute Option für Hintergrund-Updates. mu-plugins befinden sich in einem bestimmten Ordner innerhalb von /wp-content und werden automatisch von WordPress aktiviert. Diese Plugins erscheinen nicht im WordPress Plugins Screen, so dass sie nicht versehentlich von den Seitenadministratoren der Webseite deaktiviert oder entfernt werden könnten. Für einen tieferen Einblick, siehe die Codex-Dokumentation

Erstens hat die Rückgabe von true durch den Filter automatic_updater_disabled den gleichen Effekt, wie wenn man die Konstante AUTOMATIC_UPDATER_DISABLED in der wp-config.php auf true setzt:

add_filter( 'automatic_updater_disabled', '__return_true' );

Wir können jede der Update-Typologien durch die auto_update_$type Filter kontrollieren, die Updates abhängig vom Wert von $type ('core', 'plugin', 'theme' oder 'translation') aktivieren oder deaktivieren.

Wir können also alle Core-Updates automatisieren, indem wir durch den auto_update_core Filter true zurückgeben:

add_filter( 'auto_update_core', '__return_true' );

Im folgenden Beispiel aktivieren wir automatische Updates für Themes, Plugins und Übersetzungen:

add_filter( 'auto_update_theme', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_translation', '__return_true' );

In den obigen Beispielen haben wir gerade Auto-Updates aktiviert. Aber diese Filter geben uns eine größere Kontrolle über die Updates. Im folgenden Beispiel automatisieren wir Auto-Updates für zwei bestimmte Plugins:

function cb_auto_update_plugins ( $update, $item ) {
	$plugins = array ( 'hello', 'akismet' );
	if ( in_array( $item->slug, $plugins ) ) {
		// update plugin
		return true; 
	} else {
		// use default settings
		return $update; 
	}
}
add_filter( 'auto_update_plugin', 'cb_auto_update_plugins', 10, 2 );

Die Callback-Funktion behält zwei Argumente:

  1. $update: ein Boolean, der festlegt, ob ein Update durchgeführt werden soll oder nicht;
  2. $item: das Update-Angebots-Objekt.

Die Funktion prüft, ob sich der zu aktualisierende Gegenstand im $plugins-Array befindet und gibt dann entsprechend true oder false zurück.

Zuletzt können wir zwischen Entwicklungs-, Minor- und Major-Updates unterscheiden, indem wir durch die folgenden Filter true oder false zurückgeben:

add_filter( 'allow_dev_auto_core_updates', '__return_false' );
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
add_filter( 'allow_major_auto_core_updates', '__return_true' );

Wir wissen, dass gelegentlich ein Update fehlschlagen kann. Im schlimmsten Fall kann die Webseite nach einem fehlgeschlagenen Update ausfallen. Aber zum Glück können wir WordPress bitten, uns nach jedem Update (oder Versuch) mit einer E-Mail zu benachrichtigen.

Ergebnis-, Benachrichtigungs- und Debugging-E-Mails

Abhängig vom Ergebnis des Update-Prozesses sendet WordPress eine andere E-Mail an die Administrator-Adresse:

  • eine Ergebnis-E-Mail wird nach einem automatischen Core-Update verschickt;
  • eine Benachrichtigungs-E-Mail wird gesendet, wenn WordPress kein Auto-Update durchführen konnte;
  • eine Debugging-E-Mail wird in Entwicklungsversionen von WordPress verschickt.

Jedes Mal, wenn ein Auto-Update erfolgreich ist oder fehlschlägt, sendet WordPress eine Ergebnis- oder Benachrichtigungs-E-Mail mit einem der folgenden Betreffs:

  • Deine Webseite wurde auf WordPress XXX aktualisiert (Fall erfolgreich)
  • WordPress XXX ist verfügbar. Bitte updaten! (Update fehlgeschlagen und ein manuelles Update ist erforderlich: Fall fehlgeschlagen)
  • URGENT: Deine Webseite könnte aufgrund eines fehlgeschlagenen Updates heruntergefahren sein (Update fehlgeschlagen und WordPress könnte heruntergefahren sein: Fall kritisch)

Der auto_core_update_send_email Filter kontrolliert Ergebnis- und Benachrichtigungs-E-Mails. Diese E-Mails können deaktiviert werden, indem wie folgt false zurückgegeben wird:

apply_filters( 'auto_core_update_send_email', '__return_false' );

Besonders wenn du vorhast, automatische Updates auf größere Core- und/oder Theme- und Plugin-Veröffentlichungen auszudehnen, solltest du es vorziehen, Ergebnis- und Benachrichtigungs-E-Mails aktiviert zu lassen oder sie je nach Ergebnis oder Update-Typologie anzupassen. Im folgenden Beispiel wird WordPress im Erfolgsfall die Ergebnis-E-Mail nicht versenden:

function cb_auto_core_update_send_email ( $send, $type, $core_update, $result ) {
	if ( !empty( $type ) && $type == 'success' ) {
		// don't send email
		return false; 
	}
		// use default settings
		return $send; 
	}
}
add_filter( 'auto_core_update_send_email', 'cb_auto_core_update_send_email', 10, 4 );

Die Callback-Funktion behält die folgenden Argumente:

  • $send ist ein Boolescher Wert, der bestimmt, ob eine Ergebnis- oder Benachrichtigungs-E-Mail gesendet werden soll;
  • $type ist eine Zeichenkette, die die Art der zu versendenden E-Mail festlegt (erfolgreich, fehlgeschlagen oder kritisch);
  • $core_update ist das Update-Angebotsobjekt;
  • $result ist das Ergebnis für das Core-Update (kann ein WP_Error sein).

Standardmäßig werden die Administratoren benachrichtigt, wenn das Update-Angebot von WordPress.org eine bestimmte Flagge setzt und die Installation nicht aktualisiert werden kann. Die Benachrichtigungs-E-Mail wird nur einmal pro Version verschickt. Der send_core_update_notification_email Filter erlaubt einen gewissen Ermessensspielraum, ob und wann diese Art von Benachrichtigung gesendet werden soll. Wende den Filter wie folgt an:

apply_filters( 'send_core_update_notification_email', '__return_true' );

Schließlich kontrolliert der E-Mail-Filter automatic_updates_send_debug_email die Debugging-E-Mails, die nützliche Log-Informationen über die durchgeführten Aktualisierungen liefern. Standardmäßig werden diese E-Mails von Entwicklungsinstallationen gesendet. Die Rückgabe von false verhindert, dass WordPress Debugging-E-Mails versendet, während die Rückgabe von true diese E-Mails auch in stabilen Installationen aktiviert:

apply_filters( 'automatic_updates_send_debug_email', '__return_true' );

Wann und warum die automatischen WordPress Updates deaktiviert werden sollten

Der Auto-Update-Prozess ist ein großartiges Feature für viele Benutzer, da sie dadurch viel Zeit und Arbeit sparen können.

Aber selbst wenn es so aussieht, als ob Auto-Updates wirklich sicher sind, sollten wir uns fragen, ob es immer eine gute Idee ist, sie alle zu aktivieren.

Gelegentlich kann es zu Inkompatibilitätsproblemen bei Themes und Plugins kommen, die einige Funktionen unterbrechen oder sogar die Webseite zum Erliegen bringen können. Wenn die Webseite von einer guten Anzahl von Plugins abhängig ist, könnte es sicherer sein, manuelle Updates durchzuführen, zumindest für Plugins. Durch die Einzelanwendung können wir schnell Probleme erkennen, die durch eine Automatisierung schwer zu finden wären.

Wenn du ein Entwickler bist, solltest du außerdem auf die Namen achten, die du für deine Themes und Plugins wählst, auch wenn du nicht vorhast, sie zu verteilen. Wenn ihr Updates durchführt, sucht WordPress im Plugin-Verzeichnis nach neuen Versionen eurer Plugins und überschreibt eure Dateien, wenn ein Plugin mit dem gleichen Namen gefunden wird. Wenn du also vorhast, Hintergrund-Updates für Themes und Plugins zu aktivieren, solltest du darauf achten, eindeutige Namen für deine Skripte zu vergeben.

Ja, das ist eine Menge gutes Zeug für Entwickler. Aber wie kann ein Nicht-Entwickler-Benutzer Auto-Updates verwalten?

WordPress-Auto-Updates mit Plugins steuern

Wenn du kein Entwickler bist, kannst du die automatischen Updates von WordPress über ein Plugin steuern.

Mit dem Easy Updates Manager können Admin-Benutzer WordPress-Aktualisierungen sowohl auf einer einzelnen Webseite als auch bei Multi-Site-Installationen kontrollieren. Das Plugin erlaubt es, alle Typologien von WordPress-Updates zu verwalten, und Themes und Plugins können individuell für automatische Updates ausgewählt werden. Zusätzliche Funktionen beziehen sich auf Benachrichtigungs-E-Mails, das Blockieren von Benutzern und das Protokollieren von Plugin-Updates.

Easy Updates Manager - manage WordPress automatic updates
Easy Updates Manager

Im Falle einer Inkompatibilität könnte es notwendig sein, schnell auf eine frühere Version eines Themes oder Plugins zurückzugreifen. Mit dem WP Rollback kannst du eine frühere Version eines installierten Themes oder Plugins vom Plugins Screen aus wiederherstellen. Klicke einfach auf den Rollback-Link und das Plugin zeigt dir eine Liste aller verfügbaren Versionen.

Leider wird dir WP Rollback nicht helfen, wenn deine Webseite ausfällt, also vergiss nicht, ein Backup zu machen und die Online-Dokumentation sorgfältig zu lesen.

WP Rollback
WP Rollback

Wenn du schließlich einen Kompatibilitätstest für Auto-Updates in deiner WordPress-Installation benötigst, wird dir der Background Update Tester die nötigen Informationen liefern.

Automatische Updates für Premium Plugins & Themes

Als Entwickler von erstklassigen WordPress-Plugins oder Themes ist es deine Pflicht, einen automatischen Update-Mechanismus in deine Produkte zu integrieren, um den Benutzern die gleiche nahtlose Update-Erfahrung zu bieten, die sie von WordPress.org-Produkten gewohnt sind. Dies ist zum heutigen Marktstandard geworden (aus gutem Grund). Du kannst die Premium-Produkte selbst hosten und einen Update-Mechanismus entwickeln oder Plattformen wie Freemius, Kernl oder WP-Updates nutzen, die ein sicheres Repository und automatische Updates als Service, out-of-the-box, anbieten.

Zusammenfassung

Die automatischen Updates von WordPress sind ein großartiges Feature, das uns viel Zeit und Arbeit ersparen könnte und es uns ermöglicht, unsere Webseite regelmäßig zu aktualisieren. Aber würdest du alle Arten von Updates aktivieren? Lass es uns in den Kommentaren unten wissen.

Carlo Daniele Kinsta

Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.