Le WordPress d'aujourd'hui, décodé pour les développeurs

Blocs Gutenberg

wp cron event run pour forcer un recalcul de tarif hôtelier en bloc

Utiliser la commande WP-CLI pour déclencher manuellement la tâche planifiée qui régénère les tarifs affichés par un bloc de réservation hôtelière.

Par WordPress Développement • 16 février 2022 • 4 min de lecture • Aucun commentaire
wp cron event run pour forcer un recalcul de tarif hôtelier en bloc

wp cron event run recalcul_tarifs_hotel : cette unique commande WP-CLI a évité bien des allers-retours frustrants sur un projet pour un petit hôtel indépendant, où un bloc de réservation affichait des tarifs recalculés chaque nuit par une tâche planifiée, mais où l’équipe voulait pouvoir vérifier immédiatement l’effet d’un changement de grille tarifaire sans attendre le lendemain matin.

Ce billet montre comment utiliser cette commande pour forcer un recalcul de tarif hors de son horaire habituel, dans le cadre d’un bloc de réservation hôtelière. La configuration du cron système du serveur, sujet distinct relevant de l’hébergement, n’est pas traitée ici.

Le problème : une tâche planifiée invisible au quotidien

Le bloc de réservation affichait un tarif calculé à partir d’une grille saisonnière, recalculée chaque nuit à 3 heures du matin par un événement cron WordPress nommé recalcul_tarifs_hotel. Ce fonctionnement convenait très bien en usage courant, mais posait un problème pratique dès qu’une modification de grille tarifaire devait être vérifiée dans la journée : attendre la prochaine exécution nocturne rendait tout test immédiat impossible.

Le snippet commenté : la commande et son contexte

# Lister les événements cron planifiés, pour retrouver le bon nom
wp cron event list

# Forcer l'exécution immédiate de l'événement, sans attendre son horaire
wp cron event run recalcul_tarifs_hotel

La commande wp cron event run exécute immédiatement la fonction associée à l’événement cron, exactement comme si son horaire programmé venait d’être atteint. Aucune attente, aucune manipulation de date système : la tâche s’exécute dans la seconde, avec un retour direct dans le terminal indiquant son succès ou son échec.

L'essentiel à retenir : La commande déclenche immédiatement un événement cron sans attendre son horaire ; Utile pour tester ou forcer un recalcul de tarif après une modification ; Ne remplace pas la configuration du vrai cron système

La fonction déclenchée, côté PHP

add_action( 'recalcul_tarifs_hotel', function() {
    $chambres = get_posts( array( 'post_type' => 'chambre', 'numberposts' => -1 ) );
    foreach ( $chambres as $chambre ) {
        $tarif_base   = (float) get_post_meta( $chambre->ID, 'tarif_base', true );
        $coefficient  = obtenir_coefficient_saison( date( 'n' ) );
        update_post_meta( $chambre->ID, 'tarif_calcule', $tarif_base * $coefficient );
    }
} );

Le bloc de réservation, lui, se contente de lire la méta-donnée tarif_calcule déjà calculée, sans jamais effectuer ce calcul lui-même au moment de l’affichage. Cette séparation entre calcul planifié et lecture au vol garde le bloc rapide, même sur un catalogue de plusieurs dizaines de chambres.

Variantes utiles autour de cette commande

  • wp cron event delete recalcul_tarifs_hotel pour supprimer une occurrence mal planifiée avant d’en reprogrammer une propre
  • wp cron test pour vérifier que le mécanisme de déclenchement du cron WordPress fonctionne correctement sur l’environnement en cours
  • Un script de déploiement qui appelle automatiquement wp cron event run juste après toute mise à jour de la grille tarifaire, pour éviter d’y penser manuellement

Une variante pour vérifier la planification elle-même

Avant même de forcer une exécution, il est utile de vérifier que l’événement est bien planifié comme prévu, à l’heure attendue :

# Afficher le prochain horaire prévu pour l'événement recherché
wp cron event list --fields=hook,next_run_relative --format=table

Cette commande a permis de repérer, sur ce projet, qu’un déploiement récent avait involontairement dupliqué l’événement cron, planifié deux fois à quelques minutes d’écart. Sans cette vérification, le recalcul de tarif aurait continué de s’exécuter deux fois chaque nuit, sans qu’aucune erreur ne le signale jamais dans les journaux du site.

Ce que cette commande ne remplace pas

Le cron de WordPress, par défaut, ne se déclenche qu’à l’occasion d’une visite sur le site, ce qui peut retarder l’exécution réelle d’une tâche planifiée sur un site à faible trafic nocturne. La commande wp cron event run reste un outil de test et de forçage ponctuel, elle ne remplace en rien la mise en place d’un vrai cron système fiable, configuré au niveau du serveur pour déclencher WordPress à intervalles réguliers.

Sur tout projet qui dépend d’un recalcul planifié, on garde toujours cette commande sous la main en phase de recette : elle évite d’attendre une exécution nocturne pour vérifier qu’un correctif fonctionne bien.

En résumé

La commande wp cron event run permet de forcer immédiatement l’exécution d’une tâche planifiée, un outil précieux en phase de test ou juste après une modification de données qui dépendent d’un recalcul périodique. Elle complète, sans le remplacer, un cron système correctement configuré au niveau de l’hébergement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi