Cum să testezi wp_cron?
Aceasta este un fel de întrebare stupidă...
Am programat o acțiune să ruleze la fiecare oră:
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 'funcționează!';
}
Cum pot testa dacă funcționează fără să aștept o oră? :)
Am încercat să adaug wp_clear_scheduled_hook('my_hourly_events');
înainte de acest cod și să adaug wp_cron()
după, dar nu văd funcția mea rulând...
editare:
ok, am adăugat un trigger_error()
în interiorul funcției mele, am verificat log-ul de erori Apache, și este acolo :)
Acum sunt și mai confuz:
Cum poate wp-cron să ruleze în fundal? pentru că aparent asta se întâmplă dacă nu văd niciun output...
acest lucru nu pare să funcționeze într-un context de obiect; de ce?

Pluginul meu preferat pentru asta este Core Control, care are un modul foarte bun pentru afișarea a ceea ce se întâmplă în cron - ce evenimente sunt configurate, când vor fi declanșate următoarele, etc.
Pentru a intra în detalii tehnice, vezi _get_cron_array()
, care returnează datele interne stocate pentru evenimentele cron (cheile de nivel superior sunt timestamp-uri).

înregistrează HTTP Access Logger toate cererile sau doar cele făcute cu API-ul HTTP al WP? Este minunat pentru a identifica cererile pe care le fac plugin-urile și de ce se încarcă pagina ta lent :)

wp-cli este o altă metodă:
Listarea Evenimentelor
> wp cron event list
+-------------------+---------------------+-----------------------+---------------+
| hook | next_run_gmt | next_run_relative | recurrence |
+-------------------+---------------------+-----------------------+---------------+
| wp_update_plugins | 2020-04-14 08:11:38 | 7 ore 24 minute | 12 ore |
| wp_update_themes | 2020-04-14 08:11:38 | 7 ore 24 minute | 12 ore |
| wcsc_prime_sites | 2020-04-14 17:00:55 | 16 ore 13 minute | 1 zi |
+-------------------+---------------------+-----------------------+---------------+
Programarea unui Eveniment
> wp cron event schedule wp_update_plugins "now +5 seconds"
Succes: Eveniment programat cu hook-ul 'wp_update_plugins' pentru 2020-04-14 00:43:54 GMT.
Apoi puteți vizita partea frontală a site-ului și să reîmprospătați de câteva ori pentru a vă asigura că a fost declanșat. Apoi rulați din nou comanda list
pentru a verifica că nu mai este programat.
Rulare Directă în Terminal
> wp cron event run wcsc_prime_sites
Evenimentul cron 'wcsc_prime_sites' a fost executat în 0.805s.
Succes: A fost executat un total de 1 eveniment cron.
Un aspect de reținut este că wp-cli rulează în contextul wp-admin, dar WP Cron rulează pe partea frontală. De obicei, aceasta nu este o problemă, dar când scrieți joburi, asigurați-vă că require()
orice fișier din wp-admin/includes
pe care codul dvs. se așteaptă să fie încărcat.
Dacă nu faceți acest lucru, jobul va funcționa corect în wp-cli, dar va produce o eroare fatală atunci când rulează în mod normal.
Alte Comenzi
Rulați wp help cron
pentru mai multe detalii.
