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.
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.