Commencer
Comment actualiser les flux de produits à l’aide de tâches cron - AdTribes
  1. Accueil
  2. Base de connaissances
  3. Conseils généraux sur les flux
  4. Comment actualiser les flux de produits à l’aide de tâches cron

Comment actualiser les flux de produits à l’aide de tâches cron

Si votre environnement d'hébergement limite le planificateur de tâches intégré de WordPress, ou si vous avez besoin que les flux soient actualisés à une heure précise qui ne correspond pas aux intervalles horaire, bi-quotidien ou quotidien du plugin, vous pouvez plutôt déclencher les actualisations de flux à partir d'une tâche cron au niveau du serveur. Cela vous donne un contrôle exact sur le calendrier et évite de dépendre du trafic des visiteurs pour déclencher le planificateur de WordPress.

Symptômes courants : flux bloqués sur d’anciennes données, heures d’actualisation qui varient entre les visites, ou environnements d’hébergement qui désactivent wp-cron.

Product Feed Pro et Product Feed Elite prennent tous deux en charge deux approches : une commande WP-CLI (recommandée) et un script PHP autonome pour les serveurs sans WP-CLI.

Si vos flux ne se mettaient pas à jour lors des exécutions planifiées sur un serveur sensible à la casse (Linux, Kinsta ou similaire), il s’agissait d’un bug connu corrigé dans la version 13.5.4. La mise à jour du plugin résout le problème sans nécessiter de configuration cron personnalisée.

Avant de commencer

  • Product Feed Pro ou Product Feed Elite installé et actif
  • Au moins un flux de produits créé et configuré
  • Accès SSH ou cPanel à votre serveur pour ajouter des tâches cron
  • Votre ID de flux (voir l’étape 1 dans l’une ou l’autre méthode ci-dessous)
  • Version 13.5.4 ou ultérieure pour la prise en charge de WP-CLI

WP-CLI est disponible sur la plupart des hébergements WordPress gérés. C'est le moyen le plus simple et le plus fiable de déclencher une actualisation de flux à partir d'une tâche cron du serveur. Aucun fichier PHP à gérer, aucun amorçage de WordPress requis.

Étape 1 : Trouver votre ID de flux

  1. Accédez à Flux de produits → Gérer les flux dans votre administration WordPress.
  2. Cliquez sur le flux que vous souhaitez actualiser.
  3. Regardez dans la barre d’URL de votre navigateur. L’ID du flux est la valeur du paramètre id — par exemple, admin.php?page=adt-edit-feed&id=123 signifie que votre ID de flux est 123.
Barre d’adresse du navigateur affichant une URL d’administration WordPress avec page=adt-edit-feed&id=13 mise en surbrillance.

Étape 2 : Désactiver l’intervalle d’actualisation intégré

Pour empêcher le planificateur du plugin d’exécuter une actualisation en double en parallèle de votre tâche cron :

  1. Pendant que vous modifiez le flux, accédez à l’onglet Général.
  2. Définissez Intervalle d’actualisation sur Aucune actualisation.
  3. Cliquez sur Enregistrer les modifications.
Flux avec un intervalle de rafraîchissement « Aucun rafraîchissement »

Étape 3 : Ajouter la tâche cron du serveur

Sur votre serveur, ajoutez une entrée cron qui exécute wp adt-feed refresh à votre calendrier choisi. Remplacez /chemin-vers-wordpress par le répertoire racine réel de votre site et 123 par votre ID de flux :

0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 >> /tmp/feed-refresh-123.log 2>&1

Cet exemple s’exécute tous les jours à 2h00 du matin. Ajustez l’expression de planification pour correspondre à vos besoins.

Si wp ne se trouve pas dans le PATH par défaut de votre serveur, utilisez le chemin complet du binaire WP-CLI (par exemple, /usr/local/bin/wp) au lieu de simplement wp.

Pour actualiser plusieurs flux dans une seule tâche cron, listez leurs ID séparés par des espaces :

0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 456 789

Méthode 2 : Script PHP

Utilisez cette méthode si votre serveur ne prend pas en charge WP-CLI.

Le script PHP lance la génération du flux en le mettant en file d'attente via Action Scheduler. Le traitement réel se fait en arrière-plan — le flux ne sera pas mis à jour instantanément au moment où le script s'exécute. Assurez-vous que le cron de WordPress (ou un cron serveur distinct appelant wp-cron.php) est actif pour qu'Action Scheduler puisse terminer les lots.

Étape 1 : Trouver votre ID de flux

Suivez les mêmes étapes que dans la Méthode 1, Étape 1 ci-dessus. Cliquez sur votre flux pour le modifier et lisez la valeur id= de l'URL.

Étape 2 : Créer le script PHP

Créez un nouveau fichier nommé feed-refresh-123.php (remplacez 123 par l'ID de votre flux) et enregistrez-le dans le répertoire de votre thème enfant — par exemple, wp-content/themes/votre-theme-enfant/feed-refresh-123.php.

Ajoutez ce code au fichier, en remplaçant 123 par l'ID réel de votre flux :

/**
 * Product Feed Generation Cron Script
 */

// Start timing
$start_time = microtime(true);

// Simple logging function
function log_message($message) {
    $timestamp = date('Y-m-d H:i:s');
    $log_entry = "[$timestamp] $message";
    
    error_log($log_entry);
    echo $log_entry . "\n";
}

log_message("Feed generation started");

try {
    // Load WordPress (3 levels up from wp-content/themes/your-child-theme/)
    require_once(__DIR__ . '/../../../wp-load.php');
    
    $feed_id = 123; // Change this to your actual feed ID
    
    $feed = \AdTribes\PFP\Helpers\Product_Feed_Helper::get_product_feed($feed_id);
    
    if ($feed) {
        $feed->generate();
        
        $execution_time = round(microtime(true) - $start_time, 2);
        log_message("Feed ID $feed_id generated successfully in {$execution_time}s");
        
    } else {
        log_message("ERROR: Failed to get feed ID $feed_id");
    }
    
} catch (Exception $e) {
    log_message("ERROR: " . $e->getMessage());
}

Étape 3 : Désactiver l'intervalle d'actualisation intégré

Suivez les mêmes étapes que dans la Méthode 1, Étape 2 ci-dessus — réglez Intervalle d'actualisation sur Aucune actualisation dans l'onglet Général.

Étape 4 : Ajouter la tâche cron du serveur

Ajoutez l'entrée cron suivante sur votre serveur, en remplaçant les chemins par vos valeurs réelles :

0 2 * * * php /path-to-wordpress/wp-content/themes/your-child-theme/feed-refresh-123.php >> /path-to-wordpress/wp-content/themes/your-child-theme/feed-refresh-123.log 2>&1

Ceci s'exécute tous les jours à 2h00. La sortie est écrite dans un fichier journal dans le même répertoire, vous pouvez donc vérifier si le script a été exécuté et s'il a produit des erreurs.

Pour exécuter plusieurs flux indépendamment, créez un fichier PHP et une entrée cron distincts pour chaque flux.

Dépannage

Le flux ne se met pas à jour après l'exécution de la tâche cron
Tout d'abord, vérifiez le fichier journal dans lequel la tâche cron écrit. Si le journal est vide, l'entrée cron ne s'exécute pas. Vérifiez à nouveau le chemin du fichier et que le démon cron est actif sur votre serveur.

Si le journal affiche une sortie mais que le flux ne se met toujours pas à jour, vérifiez que l'ID du flux est correct : ouvrez le flux dans l'administration WordPress et confirmez que la valeur id= dans l'URL correspond à l'ID dans votre script ou commande WP-CLI.
Les flux planifiés ne se mettent pas à jour sur un serveur Linux ou Kinsta
Il s'agissait d'un bug connu (corrigé dans la version 13.5.4) où le plugin écrivait le flux actualisé dans un nom de fichier en minuscules, tandis que l'URL du flux utilisait le nom de fichier d'origine en casse mixte. Sur les systèmes de fichiers sensibles à la casse, ce sont deux fichiers différents. Mettez à jour le plugin vers la version 13.5.4 ou ultérieure pour résoudre ce problème.
La commande WP-CLI renvoie « commande introuvable »
Le binaire wp n'est peut-être pas dans le PATH de votre serveur. Contactez votre hébergeur pour confirmer que WP-CLI est disponible et demandez le chemin complet. Mettez ensuite à jour votre entrée cron pour utiliser le chemin complet (par exemple, /usr/local/bin/wp adt-feed refresh 123).
Le script PHP renvoie une erreur fatale concernant une classe manquante
La classe AdTribes\PFP\Helpers\Product_Feed_Helper n'est disponible qu'après le chargement du plugin via wp-load.php. Assurez-vous que la ligne require_once pointe vers le bon chemin wp-load.php. Le chemin doit correspondre à la racine de votre installation WordPress — pas à un sous-répertoire.

FAQ

Ai-je besoin de Product Feed Elite pour cela ?
Non. Les deux méthodes fonctionnent avec Product Feed Pro (gratuit) et Product Feed Elite.
Puis-je conserver l'intervalle d'actualisation intégré activé en parallèle d'une tâche cron du serveur ?
Vous le pouvez, mais ce n’est pas recommandé. L’exécution des deux en même temps peut entraîner la génération du flux deux fois de manière rapprochée. Désactivez l’intervalle intégré et laissez le cron du serveur contrôler la planification.
Comment trouver la bonne expression de planification cron ?
Utilisez un générateur d’expressions cron (recherchez « générateur d’expressions cron ») pour créer la planification dont vous avez besoin. Les cinq champs sont : minute, heure, jour du mois, mois, jour de la semaine.
L’approche par script PHP fonctionne-t-elle sur l’hébergement mutualisé ?
Oui, tant que vous avez accès à cPanel ou SSH pour ajouter des tâches cron et que le serveur peut exécuter PHP en ligne de commande. Si votre hébergeur ne prend pas en charge PHP en ligne de commande ou les tâches cron, utilisez plutôt le paramètre Intervalle de rafraîchissement intégré du plugin.

Besoin de plus d'aide ?

Si vous utilisez Product Feed Elite, ouvrez un ticket de support, et notre équipe vous aidera à configurer la configuration cron pour votre environnement.

Si vous utilisez Product Feed Pro, posez votre question sur le forum de support de WordPress.org.

Cet article vous a-t-il été utile ?

Articles connexes

Finaliser votre achat
Flux de produits WooCommerce AdTribes

Le meilleur plugin de flux de produits WooCommerce

  • AdTribes Pty Ltd
    ABN : 40 675 636 816
Produit
Ressources et informations
Sites partenaires
Rymera