Um automatisch den WordPress Core Updates einzurichten muss normalerweise nur eine Zeile Code in der WordPress Haupt-Konfigurationsdatei ergänzt werden. Wenn allerdings auch Themes, Plugins und Übersetzungen automatisch aktualisiert werden sollen und ein Versionierungssystem im Einsatz ist, sind weitere Einstellungen entweder im Theme oder einen Plugin notwendig.

Haupt-Konfiguration

Die automatischen Updates werden in wp-config.php mit dieser Konstante gesteuert:

define('WP_AUTO_UPDATE_CORE', PARAMETER);

Der PARAMETER kann als false, minor oder true definiert werden.

  • FALSE = keine Updates
  • MINOR = Sicherheitsupdates (Versionsnummer x.x.1)
  • TRUE = major Updates (Versionsnummer 1.0.0 und x.1.0)

Um also alle Updates zu automatisieren sieht das so aus:

define('WP_AUTO_UPDATE_CORE', TRUE);

Zusätzliche Konfiguration

Zusätzliche Einstellungen können über die add_filter-Funktion hinzugefügt werden. Diese können aber nicht in die Haupt-Konfigurationsdatei geschrieben werden. Hierfür bietet sich ein must-use Plugin oder die functions.php des aktivierten Themes an. Alternativ kann das Advanced Automatic Updates Plugin installiert werden. Die von Openstream angepasste Version auf Github ermöglicht es auch die Versionskontrolle zu berücksichtigen.

Versionierungssysteme umgehen

Wenn ein Versionierenssystem wie Git aktiv ist, also im WordPress Hauptverzeichnis ein Ordner namens .git vorhanden ist, wird das automatische Update nicht ausgeführt. Um dies zu umgehen wird dieser Filter angewendet:

add_filter('automatic_updates_is_vcs_checkout', '__return_false');

Um neben WordPress auch noch alle vorhandenen Plugins, Themes und Übersetzungen automatisch zu aktualisieren sind folgende Filter notwendig.

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

Background Update Tester

Um zu testen, ob die WP Installation für die Autoupdates vorbereitet ist, kann vorübergehend das Plugin Background Update Tester installiert werden. Es prüft, ob alle Rechte stimmen und das Autoupdate durchlafen kann.

WordPress Background Update Tester

Nach der Aktivierung des Plugins unter Dashboard → Update Tester.

Automatische Updates manuell testen

Automatische Updates laufen, wie der Name sagt, automatisch. Nach dem Einrichten dauert es dann bis zum kommenden Tag um festzustellen, ob die vorgenommenen Einstellungen auch richtig sind.

Um das automatische Update manuell zu starten bedarf es des nachfolgenden Skriptes:

<?php
  // force-update.php
  require( dirname(__FILE__) . '/wp-load.php' );
  wp_maybe_auto_update();
?>

Dieses Skript wird in das Root-Verzeichnis von WordPress gespielt und über http://alias.domain.tld/force-update.php aufgerufen.
Alternativ lässt sich das Skript auch direkt, in der Kommandozeile, aufrufen: php ./force-update.php

Hinweis: Nach dem Test sollte das Skript wieder vom Server gelöscht werden!

Hintergrund Infos

WordPress sucht alle 12 Stunden nach Updates für sich selbst. Dies geschieht zwischen 7 und 8 Uhr morgens, beziehungsweise Abends, durch dieses Skript:

/wp-includes/update.php

( ! wp_next_scheduled( 'wp_maybe_auto_update' ) && ! defined( 'WP_INSTALLING' ) ) {
// Schedule auto updates for 7 a.m. and 7 p.m. in the timezone of the site.
$next = strtotime( 'today 7am' );
$now = time();
// Find the next instance of 7 a.m. or 7 p.m., but skip it if it is within 3 hours from now.
while ( ( $now + 3 * HOUR_IN_SECONDS ) > $next ) {
$next += 12 * HOUR_IN_SECONDS;
}
$next = $next - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS;
// Add a random number of minutes, so we don't have all sites trying to update exactly on the hour
$next = $next + rand( 0, 59 ) * MINUTE_IN_SECONDS;
wp_schedule_event( $next, 'twicedaily', 'wp_maybe_auto_update' );
}

Alternativ kann auch ein Cron-Job eingerichtet werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.