Come testare wp_cron?
Questa è una domanda un po' ingenua...
Ho programmato un'azione da eseguire ogni ora:
if(!wp_next_scheduled('my_hourly_events'))
wp_schedule_event(time(), 'hourly', 'my_hourly_events');
add_action('my_hourly_events', 'the_function_to_run');
function the_function_to_run(){
echo 'funziona!';
}
Come posso testare se funziona senza aspettare un'ora? :)
Ho provato ad aggiungere wp_clear_scheduled_hook('my_hourly_events');
prima di questo codice e aggiungere wp_cron()
dopo, ma non vedo la mia funzione in esecuzione...
modifica:
ok, ho aggiunto un trigger_error()
dentro la mia funzione, ho controllato il log degli errori di apache, ed è presente :)
Ora sono ancora più confuso:
Come può wp-cron essere eseguito in background? perché apparentemente è questo che succede se non vedo output...
questo non sembra funzionare in un contesto oggetto; perché?
Il mio plugin preferito per questo è Core Control che ha un modulo molto utile per visualizzare cosa succede nel cron - quali eventi sono configurati, quando verranno eseguiti, ecc.
A livello di sporcarsi le mani, vedi _get_cron_array()
, che restituisce i dati interni memorizzati per gli eventi cron (le chiavi di primo livello sono timestamp).

L'HTTP Access Logger registra tutte le richieste o solo quelle effettuate con l'API HTTP di WP? È fantastico per trovare le richieste che i plugin fanno e capire perché la tua pagina carica lentamente :)

wp-cli è un altro modo:
Elenco degli Eventi
> wp cron event list
+-------------------+---------------------+-----------------------+---------------+
| hook | next_run_gmt | next_run_relative | recurrence |
+-------------------+---------------------+-----------------------+---------------+
| wp_update_plugins | 2020-04-14 08:11:38 | 7 ore 24 minuti | 12 ore |
| wp_update_themes | 2020-04-14 08:11:38 | 7 ore 24 minuti | 12 ore |
| wcsc_prime_sites | 2020-04-14 17:00:55 | 16 ore 13 minuti | 1 giorno |
+-------------------+---------------------+-----------------------+---------------+
Pianifica un Evento
> wp cron event schedule wp_update_plugins "now +5 seconds"
Successo: Evento pianificato con hook 'wp_update_plugins' per il 2020-04-14 00:43:54 GMT.
Quindi puoi visitare il front-end del sito e aggiornare un paio di volte per assicurarti che sia attivato. Poi esegui di nuovo list
per verificare che non sia più pianificato.
Esegui Direttamente nel Terminale
> wp cron event run wcsc_prime_sites
Eseguito l'evento cron 'wcsc_prime_sites' in 0.805s.
Successo: Eseguito un totale di 1 evento cron.
Una particolarità da tenere a mente è che wp-cli viene eseguito nel contesto di wp-admin, ma WP Cron viene eseguito sul front end. Di solito non è un problema, ma quando scrivi i job, assicurati di require()
qualsiasi file di wp-admin/includes
che il tuo codice si aspetta siano caricati.
Se non lo fai, il job funzionerà bene in wp-cli, ma produrrà un errore fatale quando verrà eseguito normalmente.
Altri comandi
Esegui wp help cron
per maggiori dettagli.
