Als het gaat om beveiliging, weten we hoe ontzettend belangrijk het is om regelmatig je volledige WordPress installaties (core, thema’s én plugins) te updaten, maar ook hoe lang dit updateproces kan duren, zeker als je wat meer plugins geïnstalleerd hebt. Het wordt meestal aanbevolen om de volgende stappen af te lopen:

  1. Maak back-ups van bestanden en databases
  2. Schakel plugins uit
  3. Updaten
  4. Schakel plugins één voor één in
  5. Controleer de website

Het kan een nogal langdradig proces zijn voor één website, en het wordt helemaal tijdrovend en vervelend wanneer je dit moet doen voor vijf, tien of zelfs nog meer websites.

WordPress 3.7 introduceerde automatische updates, met als specifiek doel om de beveiliging van installaties te verbeteren en het beheer van websites makkelijker te maken. Standaard is deze handige functie ingeschakeld voor kleinere updates (dus onderhoud en beveiligingsreleases) en vertalingsbestanden, maar het is ook mogelijk om de updates naar wens aan te passen. Daarom gaan we in dit artikel kijken hoe je het updaten zoveel mogelijk kan automatiseren zodra er een nieuwe versie van WordPress core, je thema’s of een plugin uitgegeven wordt. Laten we dus eens goed kijken naar de automatische updates van WordPress!

WordPress automatische updates
WordPress automatische updates

Automatische updates inhoudsopgave

WordPress automatische updates

Er zijn vier soorten updates en automatische updates bij WordPress:

  1. Updates van WordPress core
  2. Updates van plugins
  3. Updates van thema’s
  4. Updates met vertalingsbestanden

Updates van WordPress core zijn weer onderverdeeld in drie subtypen:

  1. Core development (alleen beschikbaar voor development installaties)
  2. Minor core updates (onderhoud en beveiliging) – kleinere updates die standaard geactiveerd zijn voor stabiele installaties
  3. Major core updates

WordPress biedt je de mogelijkheid om het update proces te automatiseren voor alle typen, via twee wp-config.php constanten en een aantal API filters.

Beheren van updates op de achtergrond via wp-config.php

WordPress biedt enkele wp-config.php constanten waarmee we auto-updates kunnen beheren. Door AUTOMATIC_UPDATER_DISABLED op TRUE te zetten, zullen alle automatische updates uitgezet worden:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE maakt het mogelijk om alleen de updates van WordPress core te beheren (minor, major en development releases). Deze constante kan als volgt worden ingesteld:

# 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 development installaties staat WP_AUTO_UPDATE_CORE standaard op TRUE. In stabiele installaties is de standaard “minor”.

Voor de volledigheid: het is goed om te noemen dat er nog een extra constante te definiëren is die auto-updates kan uitschakelen. Maar wanneer je deze op TRUE zet, zullen alle bewerkingen van bestanden uitgezet worden, dus ook handmatige updates en installaties van plugins en thema’s.

define( 'DISALLOW_FILE_MODS', true );

In plaats daarvan kan je meestal beter de constante DISALLOW_FILE_EDITS definiëren, die de bestanden editor uitschakelt, maar de installatie en update functie verder niet beperkt.

Gerelateerde tutorial: wp-config.php bestand – Een uitgebreide bespreking over hoe je WordPress configureert

Beheren van updates op de achtergrond via API filters

Configuratie-constanten bieden een algemene manier om auto-updates in of uit te schakelen. Maar WordPress bevat ook een aantal filters waarmee je op een gedetailleerder niveau allerlei soorten updates kan beheren.

Opmerking: Filters moeten binnen plugins gebruikt worden, en “must use plugins” zijn een goede optie voor achtergrond updates, doordat ze in een speciale map binnen /wp-content zitten en automatisch ingeschakeld worden door WordPress. Deze plugins verschijnen ook niet in het WordPress Plugins scherm, dus ze kunnen niet per ongeluk worden uitgezet of verwijderd door admins op je site. Voor meer details kan je de Codex documentatie lezen.

Allereerst: het automatic_updater_disabled filter op TRUE zetten, heeft hetzelfde effect als de constante AUTOMATIC_UPDATER_DISABLED op TRUE zitten in wp-config.php:

add_filter( 'automatic_updater_disabled', '__return_true' );

We kunnen alle soorten updates beheren via de auto_update_$type filters, die updates inschakelen of uitschakelen op basis van de waarde van $type (namelijk: 'core''plugin''theme' of 'translation').

We kunnen dus alle core updates automatiseren door het auto_update_core filter op TRUE te zetten:

add_filter( 'auto_update_core', '__return_true' );

In het volgende voorbeeld zetten we ook automatische updates voor thema’s, plugins en vertalingen aan:

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

In de bovenstaande voorbeelden hebben we auto-updates ingeschakeld. Maar deze filters kan je nog preciezer instellen. In het volgende voorbeeld automatiseren we auto-updates voor twee specifieke 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 );

De callback functie heeft twee argumenten:

  1. $update: een Booleaanse waarde die aangeeft of er al dan niet updates plaats moeten vinden;
  2. $item: het object voor de specifieke update.

De functie controleert of het item dat geüpdatet kan worden in de $plugins array zit, en stuurt op basis daarvan True of False terug.

Als laatste kunnen we ook differentiëren tussen development, minor en major updates, door true of false via de volgende filters in te stellen:

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' );

We weten dat een update soms mislukt. In het ergste geval kan een website zelfs offline gaan door een fout met een update. Maar gelukkig kunnen we WordPress vragen om een melding per mail na elk update (of poging tot updaten).

E-mails met resultaten, meldingen en debugging

WordPress stuurt een mail naar het adres van de admin, afhankelijk van het resultaat van het updateproces:

  • een “result” e-mail wordt verstuurd na een automatische update van WordPress core;
  • een meldingsmail wordt verstuurd wanneer WordPress een auto-update niet kon uitvoeren;
  • een debugging mail wordt verstuurd wanneer je een development versie van WordPress gebruikt.

Wanneer een auto-update uitgevoerd wordt of mislukt, stuurt WordPress een mail met het resultaat of een meldingsmail met één van de volgende onderwerpen:

  • Your site has updated to WordPress XXX (case success)
  • WordPress XXX is available. Please update! (update failed and a manual update is required: case fail)
  • URGENT: Your site may be down due to a failed update(update failed and WordPress could be down: case critical)

Het auto_core_update_send_email filter bepaalt de e-mails met resultaten en meldingen. Deze e-mails kunnen uitgezet worden door het filter op false te zetten, met de volgende code:

apply_filters( 'auto_core_update_send_email', '__return_false' );

Vooral wanneer je van plan bent om automatische updates uit te voeren voor alle nieuwere WordPress core releases en de releases van thema’s en plugins, wil je waarschijnlijk deze e-mails ingeschakeld laten, maar aanpassen op basis van het resultaat of het soort update. In het volgende voorbeeld zal WordPress geen resultatenmail meer sturen wanneer de update geslaagd is:

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 );

De callback functie heeft de volgende argumenten:

  • $send is een Booleaanse waarde die bepaalt of er een mail met resultaten of meldingen verstuurd moet worden;
  • $type is een string die instelt welk type email verstuurd moet worden (success, fail of critical);
  • $core_update is het object voor de specifieke update.
  • $result is het resultaat van de update van WordPress core (dit kan een WP_Error zijn).

Standaard krijgen admins een melding wanneer er een update wordt aangeboden vanuit WordPress.org, maar er iets misgaat waardoor de installatie de update niet kan uitvoeren. Deze melding wordt slechts één keer per release verstuurd. Het send_core_update_notification_email filter biedt wat flexibiliteit in wanneer deze meldingen wel of niet verstuurd moeten worden. Stel dit filter zo in:

apply_filters( 'send_core_update_notification_email', '__return_true' );

Als laatste bepaalt het automatic_updates_send_debug_email filter welke debugging mails er verstuurd worden, die handige log info bevatten over de uitgevoerde updates. Standaard worden deze mails verstuurd door development installaties. Door deze op FALSE te zetten zal WordPress geen debugmails meer sturen, en als je het filter op TRUE zetten zullen de mails juist wel in stabiele installaties verstuurd worden:

apply_filters( 'automatic_updates_send_debug_email', '__return_true' );

Wanneer en waarom je automatische updates van WordPress uit moet schakelen

Het auto-update proces is een ideale functie voor de meeste gebruikers, aangezien het een hoop tijd en moeite kan schelen.
Maar alhoewel auto-updates heel veilig lijken te zijn, moet je jezelf altijd afvragen of je ze echt allemaal standaard wil inschakelen.

Zo zijn er soms compatibiliteitsproblemen met thema’s of plugins, die door een update enkele functies of zelfs de hele website vast kunnen laten lopen. Wanneer een website vrij veel plugins gebruikt, kan het soms veiliger zijn om handmatig te updaten, of in ieder geval de plugins handmatig te updaten. Door dit één-voor-één kunnen we snel problemen zien, die bij een automatisch proces moeilijk terug te vinden kunnen zijn.

Daarnaast moet je als je een developer bent altijd voorzichtig zijn met de namen die je kiest voor je thema’s en plugins, zelfs wanneer je ze niet publiceert. Bij het uitvoeren van updates zoekt WordPress in de Plugin Directory naar nieuwe versies van je plugins, en overschrijft je bestanden wanneer er een plugin met dezelfde naam wordt gevonden. Wanneer je van plan bent om achtergrondupdates voor je thema’s en plugins in te schakelen, moet je dus zeker weten dat je unieke namen in je scripts gebruikt.

Dat is allemaal erg nuttige info voor developers. Maar hoe kan iemand die geen developer is auto-updates handig gebruiken?

Beheer automatische WordPress updates met plugins

Wanneer je zelf geen developer bent, kan je de automatische updates van WordPress beheren via een plugin.

Easy Updates Manager maakt het mogelijk voor admin gebruikers om WordPress updates te beheren voor zowel enkelvoudige websites als Multisite installaties. Via de plugin kan je alle typen WordPress updates beheren, en bij de thema’s en plugins kan je auto-updates individueel inschakelen. Overige functies hebben betrekking op de meldingsmails, het blokkeren van gebruikers en het loggen van de updates van plugins.

Easy Updates Manager - manage WordPress automatic updates
Easy Updates Manager

Bij problemen met compatibiliteit kan het nodig zijn om snel terug te gaan naar een vorige versie van je plugin of thema. WP Rollback maakt het mogelijk om een vorige versie te herstellen van een thema of plugin dat je geïnstalleerd hebt, via het Plugins scherm. Klik gewoon op de link Rollback, en de plugin geeft je een lijst met mogelijke versies.

Helaas zal WP Rollback je niet kunnen helpen als je website helemaal offline gaat, dus zorg altijd voor een back-up en lees alle online documentatie.

WP Rollback
WP Rollback

Ter afsluiting: als je een compatibiliteitstest wil doen bij auto-updates binnen je WordPress installatie, dan kan Background Update Tester je de benodigde informatie geven.

Automatische updates voor premium plugins en thema’s

Als developer van premium WordPress plugins en thema’s, is het jouw verantwoordelijkheid om een mechanisme voor automatische updates te integreren in je producten, zodat gebruikers een soepele ervaring hebben, zoals ze immers verwachten van WordPress.org producten. Dit is tegenwoordig de standaard, en met goede reden. Je kan zelf premium producten hosten en een updatemechanisme ontwikkelen, of een platform zoals Freemius, Kernl, of WP Updates gebruiken, die je een veilige opslag bieden en standaard automatische updates voor je regelen.

Samenvatting

Automatische updates van WordPress zijn een handige functie die je een hoop tijd en moeite kan schelen, en waardoor je je website altijd kan laten updaten. Maar is het slim om alle soorten updates in te schakelen? Laat het ons weten in de reacties hieronder.

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.