Se il tuo ambiente di hosting limita lo scheduler delle attività integrato di WordPress, o se hai bisogno che i feed vengano aggiornati in un momento preciso che gli intervalli orari, due volte al giorno o giornalieri del plugin non soddisfano, puoi invece gestire gli aggiornamenti dei feed da un cron job a livello di server. Questo ti dà un controllo esatto sui tempi ed evita di fare affidamento sul traffico dei visitatori per attivare lo scheduler di WordPress.
Sintomi comuni: feed bloccati su dati vecchi, tempi di aggiornamento che variano tra le visite, o ambienti di hosting che disabilitano wp-cron.
Product Feed Pro e Product Feed Elite supportano entrambi due approcci: un comando WP-CLI (consigliato) e uno script PHP autonomo per server senza WP-CLI.
Prima di iniziare
- Product Feed Pro o Product Feed Elite installato e attivo
- Almeno un feed di prodotto creato e configurato
- Accesso SSH o cPanel al tuo server per aggiungere cron job
- Il tuo ID feed (vedi Passaggio 1 in entrambi i metodi sottostanti)
- Versione 13.5.4 o successiva per il supporto WP-CLI
Metodo 1: WP-CLI (consigliato)
WP-CLI è disponibile sulla maggior parte degli host WordPress gestiti. È il modo più semplice e affidabile per attivare un aggiornamento del feed da un cron job del server. Nessun file PHP da gestire, nessun bootstrapping di WordPress richiesto.
Passaggio 1: Trova il tuo ID feed
- Vai su Product Feed → Gestisci Feed nella tua bacheca WordPress.
- Fai clic sul feed che desideri aggiornare.
- Guarda la barra degli indirizzi del browser. L'ID del feed è il valore del parametro
id— ad esempio,admin.php?page=adt-edit-feed&id=123significa che il tuo ID feed è123.

Passaggio 2: Disabilita l'intervallo di aggiornamento integrato
Per evitare che lo scheduler del plugin esegua un aggiornamento duplicato insieme al tuo cron job:
- Mentre modifichi il feed, vai alla scheda Generale.
- Imposta Intervallo di aggiornamento su Nessun aggiornamento.
- Fai clic su Save Changes.

Passaggio 3: Aggiungi il cron job del server
Sul tuo server, aggiungi una voce cron che esegua wp adt-feed refresh secondo la pianificazione scelta. Sostituisci /path-to-wordpress con la directory principale effettiva del tuo sito e 123 con il tuo ID feed:
0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 >> /tmp/feed-refresh-123.log 2>&1
Questo esempio viene eseguito ogni giorno alle 2:00. Modifica l'espressione di pianificazione per soddisfare le tue esigenze.
Per aggiornare più feed in un unico cron job, elenca i loro ID separati da spazi:
0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 456 789
Metodo 2: Script PHP
Usa questo metodo se il tuo server non supporta WP-CLI.
Passaggio 1: Trova il tuo ID feed
Segui gli stessi passaggi del Metodo 1, Passaggio 1 sopra. Fai clic sul tuo feed per modificarlo e leggi il valore id= dall'URL.
Passaggio 2: Crea lo script PHP
Crea un nuovo file chiamato feed-refresh-123.php (sostituisci 123 con l'ID del tuo feed) e salvalo nella directory del tuo child theme, ad esempio wp-content/themes/your-child-theme/feed-refresh-123.php.
Aggiungi questo codice al file, sostituendo 123 con l'ID effettivo del tuo feed:
/**
* 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());
}
Passaggio 3: Disabilita l'intervallo di aggiornamento integrato
Segui gli stessi passaggi del Metodo 1, Passaggio 2 sopra: imposta Intervallo di aggiornamento su Nessun aggiornamento nella scheda Generale.
Passaggio 4: Aggiungi il cron job del server
Aggiungi la seguente voce cron sul tuo server, sostituendo i percorsi con i tuoi valori effettivi:
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
Questo viene eseguito ogni giorno alle 2:00. L'output viene scritto in un file di log nella stessa directory, quindi puoi verificare se lo script è stato eseguito e se ha prodotto errori.
Per eseguire più feed in modo indipendente, crea un file PHP e una voce cron separati per ciascun feed.
Risoluzione dei problemi
Se il log mostra output ma il feed non si aggiorna ancora, verifica che l'ID del feed sia corretto: apri il feed nell'amministrazione di WordPress e conferma che il valore
id= nell'URL corrisponda all'ID nel tuo script o comando WP-CLI.wp potrebbe non essere nel PATH del tuo server. Contatta il tuo host per confermare che WP-CLI sia disponibile e chiedi il percorso completo. Quindi aggiorna la tua voce cron per utilizzare il percorso completo (ad es. /usr/local/bin/wp adt-feed refresh 123).AdTribes\PFP\Helpers\Product_Feed_Helper è disponibile solo dopo che il plugin è stato caricato tramite wp-load.php. Assicurati che la riga require_once punti al percorso corretto di wp-load.php. Il percorso deve corrispondere alla directory principale della tua installazione di WordPress, non a una sottodirectory.Domande frequenti
Serve ulteriore aiuto?
Se utilizzi Product Feed Elite, apri un ticket di supporto e il nostro team ti aiuterà a configurare l'impostazione cron per il tuo ambiente.
Se sei su Product Feed Pro, poni la tua domanda nel forum di supporto di WordPress.org.

