WordPress.org

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

de:Automatische Hintergrund Updates einstellen

Aktualisierungsarten

Automatische Hintergrundaktualisierungen wurden mit WordPress 3.7 eingeführt, um eine bessere Sicherheit zu gewährleisten und um Aktualisierungen zu vereinfachen. Standardmäßig sind für die meisten Websites nur kleinere Veröffentlichungen wie Wartungs- und Sicherheitsaktualisierungen aber auch Aktualisierungen der Übersetzungen aktiviert. In besonderen Fällen werden auch Plugins und Themes automatisch aktualisiert.

Unter WordPress gibt es vier verschiedene Aktualisierungs-Typen, die automatisch im Hintergrund aktualisiert werden können:

  1. Quelltext (Core) Aktualisierungen
  2. Plugin Aktualisierungen
  3. Theme Aktualisierungen
  4. Aktualisierungen der Übersetzung

Core-Aktualisierungen

Aktualisierungen des Cores sind in drei Typen aufgeteilt:

  1. Core Entwickler- (Developement-) Aktualisierungen (auch bekannt als "Bleeding Edge")
  2. Kleine Core Aktualisierungen, wie Sicherheits- und Wartungs-Veröffentlichungen
  3. Hauptversionsaktualisierungen

Standardmäßig hat jede Website automatische Aktualisierungen für kleine Core Veröffentlichungen(Wartungs-, Sicherheits- und Sprachdateien-Veröffentlichungen) aktiviert. Auf Websites, die bereits die Entwicklerversion nutzen, erhalten standardmäßig automatische Aktualisierungen für Entwicklerversionen.

Update Einstellung

Automatische Updates können mit zwei Methoden eingestellt werden: Konstanten in wp-config.php setzen oder Filter per Plugin hinzufügen.

Einstellen mithilfe der wp-config.php

Mithilfe der wp-config.php können automatische Updates komplett deaktiviert und Core Updates basierend auf dem Update-Typ deaktiviert oder konfiguriert werden.

Konstante zum Deaktivieren aller Updates

Die Kern-Entwickler haben sich bewusst dafür entschieden, automatische Updates für Unterversionen und Sprachdateien "out of the box" zu ermöglichen. Auch in Zukunft wird dies eine der besten Möglichkeiten sein, die Website auf dem neuesten Stand und sicher zu halten. Von einem Deaktivieren dieser Updates wird daher dringend abgeraten.

Um alle Arten der automatischen Updates, wie Core oder Ähnliche, zu deaktiveren, muss das folgende zu der wp-config.php Datei hinzugefügt werden:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Konstanten zum Konfigurieren von Core Updates

Um automatische Updates für Hauptversionen oder für Entwicklungszwecke zu aktivieren, nutzt man am besten die Konstante WP_AUTO_UPDATE_CORE. Drei unterschiedliche Wege diese Konstante zu definieren ermöglichen das pauschale Aktivieren, oder pauschale Deaktivieren unterschiedlicher Typen von Core Updates auf einmal.

define( 'WP_AUTO_UPDATE_CORE', false );

WP_AUTO_CORE kann mit drei Werten genutzt werden, wovon jede ein anderes Verhalten produziert:

  • Wert true - Updates der Entwickler-, Unter- und Hauptversionen werden alle aktiviert
  • Wert false - Updates der Entwickler-, Unter- und Hauptversionen werden alle deaktiviert
  • Wert 'minor' - Updates der Unterversionen werden aktiviert, Entwickler- und Hauptversionen hingegen deaktiviert

Beachten muss man hierbei, dass nur Seiten, die bereits als Entwicklerversion laufen, automatische Entwickler-Updates erhalten werden. Für andere Seiten bedeutet das Setzen von WP_AUTO_UPDATE_CORE true, dass nur kleine Core- und Hauptversionen-Updates erfolgen.

Konfiguration mit Filtern

Die Nutzung von Filtern erlaubt eine genau abgestimmte Kontrolle der automatischen Updates. Der beste Platz um diese Filter zu hinterlegen ist ein must-use plugin.

Hinweis: Bitte nicht add_filter() Aufrufe in die wp-config.php Datei einfügen - das verursacht Konflikte mit WP-CLI und möglicherweise noch weitere Probleme.

Deaktivierung aller Updates per Filter

Man kann auch alle automatischen Updates mit der Nutzung des folgenden Filters deaktivieren:

add_filter( 'automatic_updater_disabled', '__return_true' );

Core Updates durch Filter

Um nur sämtliche Core Updates zu deaktivieren, kommt der folgende Filter zum Einsatz:

add_filter( 'auto_update_core', '__return_false' );

Angenommen man möchte alle drei Arten der Core Updates zusammen weder Aktivieren noch Deaktivieren, sondern diese selektiv aktivieren oder deaktivieren, dann kommen die folgenden Filter zum Zuge: allow_dev_auto_core_updates, allow_minor_auto_core_updates, und allow_major_auto_core_updates.

Es existieren zwei shorthand functions in WordPress, die es ermöglichen, spezielle Typen von Core Updates mit einer einzigen Zeile Code zu aktivieren oder zu deaktivieren. Das sind __return_true und __return_false. Nachfolgend ein paar Beispiele dieser Filter:

Um gezielt automatische Updates zu aktivieren selbst wenn ein VCS Ordner (.git, .hg, .svn etc.) in dem WordPress Verzeichnis oder irgendeinem seiner Elternverzeichnisse gefunden wurde:

add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );

Um gezielt automatische Updates für Entwicklerversionen (nightly) zu aktivieren, nutzt man das folgende:

add_filter( 'allow_dev_auto_core_updates', '__return_true' );

Um gezielt automatische Updates für Unterversionen zu deaktivieren, nutzt man das folgende:

add_filter( 'allow_minor_auto_core_updates', '__return_false' );

Um gezielt automatische Updates für Unterversionen zu aktivieren, nutzt man das folgende:

add_filter( 'allow_minor_auto_core_updates', '__return_true' );

Um gezielt automatische Updates für Hauptversionen zu deaktivieren, nutzt man das folgende:

add_filter( 'allow_major_auto_core_updates', '__return_false' );

Um gezielt automatische Updates für Hauptversionen zu aktivieren, nutzt man das folgende:

add_filter( 'allow_major_auto_core_updates', '__return_true' );

Plugin & Theme Updates per Filter

Hintergrundaktualisierungen von Pugins und Themes werden nur in besonderen Fällen ausgeführt, die durch Rückmeldung der WordPress API festgelegt werden. Diese API wird vom WordPress Sicherheits-Team kontrolliert, um kritische Sicherheitslücken zu patchen. Um Updates für jeden Fall zu aktivieren oder deaktivieren, kann man den auto_update_$type Filter nutzen, wobei dann $type mit "plugin" oder "theme" ersetzt wird.

Um alle automatischen Updates für sämtliche Plugins zu aktivieren, nutzt man folgenden Filter:

add_filter( 'auto_update_plugin', '__return_true' );

Um alle automatischen Updates für sämtliche Themes zu aktivieren, nutzt man folgenden Filter:

add_filter( 'auto_update_theme', '__return_true' );

Um alle automatischen Updates für sämtliche Plugins, inklusive der Security-Team-Updates zu deaktivieren, nutzt man diesen Filter:

add_filter( 'auto_update_plugin', '__return_false' );

Um alle automatischen Updates für sämtliche Themes, inklusive der Security-Team-Updates zu deaktivieren, nutzt man diesen Filter:

add_filter( 'auto_update_theme', '__return_false' );

Solche auto_update_$type Filter erlauben ebenso eine feiner granulierte Kontrolle, da der spezielle Update-Typ in den Filter integriert wird. Wenn ein automatisches Update nur für spezielle Plugins aktiviert werden soll, dann kommt ein Code wie dieser zum Einsatz:

function auto_update_specific_plugins ( $update, $item ) {
    // Array of plugin slugs to always auto-update
    $plugins = array ( 
        'akismet',
        'buddypress',
    );
    if ( in_array( $item->slug, $plugins ) ) {
        return true; // Always update plugins in this array
    } else {
        return $update; // Else, use the normal API response to decide whether to update or not
    }
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

Updates für Übersetzungen per Filter

Automatische Updates für Übersetzungsdateien sind standarsmäßig aktiviert, dasselbe gilt für kleine Core Updates (Unterversionen).

Um die Updates der Übersetzungsdateien zu deaktivieren, setzt man den folgenden Filter ein:

add_filter( 'auto_update_translation', '__return_false' );

E-Mails per Filter deaktivieren

// Deaktivierung der Update-E-Mails
add_filter( 'auto_core_update_send_email', '__return_false' );

Dieser Filter kann auch dazu genutzt werden, um die Updates entsprechend von email $type (success, fail, critical), update type object $core_update, oder $result zu manipulieren:

/* @param bool   $send        Ob generell eine E-Mail gesendet wird. Standardwert true.
 * @param string $type        Der Typ der E-Mail, die verschickt wird.
 *                            Kann folgendes sein: 'success', 'fail', 'critical'
 *			      (erfolgreich, fehlgeschlagen, kritisch).
 * @param object $core_update Das Update, das versucht wurde.
 * @param mixed  $result      Das Ergebnis des Core Updates. Kann WP_Error sein.
 */
apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result );

Ressourcen