Als PHP Redis opcode cache actief is voor jouw WordPress website, dan kan het gebeuren dat je na het publiceren van een nieuw bericht niet direct dat bericht ziet staan. Je kijkt dan naar de gecachete pagina, en dat is soms vervelend. Lees gauw verder hoe je dit oplost met een kleine plugin!

In dit artikel vind je een kleine Must-Use Plugin die automatisch de Redis cache leegt zodra jij een post publiceert. Je bent er dan zeker van dat jouw bezoekers (en jij) dat bericht direct zien.

Neem onderstaande code op in een nieuw bestand en sla het op al flush-redis.php. Upload dit bestand via FTP naar jouw website, en plaats het in de map wp-content/mu-plugins/. Bestaat de map mu-plugins nog niet? Maak deze dan even aan met jouw FTP-programma.

<?php
/**
 * Plugin Name: Flush Redis cache
 * Plugin URI: https://vevida.com
 * Description: Flushes PHP Redis cache upon publish_post action. By clearing the opcode cache in memory you immediately can see a new or changed post. This is a Must Use Plugin that you manually have to add to wp-content/mu-plugins directory.
 * Version: 1.2
 * Author: Jan Reilink
 * License: GPLv2
 */

function manual_clear_redis_cache() {
	if( class_exists( 'Redis' ) ) {
		$r = new Redis();
		if ($r->connect( "/tmp/redis.sock", 0)) {
			if( false === $r->flushAll() ) {
				if( WP_DEBUG === true ) {
					error_log( 'After post publish: Flushing PHP Redis failed.' );
				}
				return false;
			}
			else {
				if( WP_DEBUG === true ) {
					error_log( 'After post publish: PHP Redis flushed succesfully.' );
				}
				return true;
			}
		}
		else {
			if( WP_DEBUG === true ) {
				error_log( 'Could not connect to PHP Redis.' );
			}
		}
    }
}
add_action( 'publish_post', 'manual_clear_redis_cache', 10, 2 );

Hier geldt hetzelfde als met het legen van PHP Memcached cache:

  1. De action publish_post wordt uitgevoerd bij het publiceren van een post, maar dit werkt niet met custom post types! Je vindt meer informatie in de WordPress Development StackExchange post “Should I use add_action(‘publish_post or add_filter(‘publish_post?“.
  2. De volledige Redis cache wordt geleegd.
  3. Gebruik deze PHP plugin-code om verder mee te ontwikkelen.

Custom post types vallen buiten de scope van onze voorbeeld must-use plugin. Het resultaat van deze functie wordt gelogd in het WordPress debug.log-bestand, als WP_DEBUG ingeschakeld is. Veel Redis Cache plugins beschikken over eigen flush-functies (zie bijvoorbeeld redis-cache en pj-page-cache-red), houd hier dus rekening mee.

Voor PHP Memcached vind je een vergelijkbare functie om de PHP Memcached cache te legen in WordPress.

Heb je hierover vragen? Neem gerust contact op met onze WordPress experts.

Wat vind jij van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.