Cum să depanați evenimentele programate "Cron" wp_schedule_event în WordPress
Cum pot depana problemele cu WordPress Cron? Știu că acesta se va declanșa când utilizatorii accesează site-ul, dar eventualele erori nu vor fi afișate acestora, deoarece sarcinile sunt executate "asincron". Așadar, cum aș putea depana erorile?
Folosesc wp_schedule_event

Puteți rula manual WP cron accesând: http://example.com/wp-cron.php?doing_wp_cron
Dacă nu doriți ca cron-ul automat să ruleze în timp ce faceți depanare, adăugați următoarea linie în fișierul /wp-config.php
:
define('DISABLE_WP_CRON', true);
Dacă lucrați într-un mediu de dezvoltare și doriți să afișați informații de depanare, accesând manual cron-ul așa cum este descris mai sus vă va permite să vedeți aceste informații.
Alternativ, puteți folosi funcția PHP încorporată error_log pentru a înregistra mesaje în jurnalul de erori în scopul depanării. Va trebui să utilizați această funcție împreună cu setările WP_DEBUG, așa cum a menționat Rarst.

Este necesar parametrul ?doing_wp_cron
? Vezi tutorialul de configurare manuală de la EasyCron.

Puteți face depanarea manual, creând o acțiune și executând acțiunea Cron în interior. Astfel:
add_action( 'init', function() {
if ( ! isset( $_GET['the_cron_test'] ) ) {
return;
}
error_reporting( 1 );
do_action( 'this_is_cron_event_hook' );
die();
} );
Și accesând adresa site-ului dvs.: http://example.com?the_cron_test
Aceasta ar trebui să vă arate orice erori legate de sarcina cron.
Dar nu are niciun sens să o faceți manual. Puteți folosi pluginul Advanced Cron Manager PRO care face asta pentru dvs. și, de asemenea, salvează jurnalul și alte statistici.

Poți utiliza plugin-ul Cron-View. Acolo poți vedea dacă job-ul tău este a) înregistrat și b) care este următoarea dată de execuție.
În plus, poți adăuga un interval mai mic pentru evenimentul tău (de exemplu la fiecare 2 minute) și să testezi metoda mai frecvent pe un sistem local. Folosește filter hook-ul 'cron_schedules' pentru a înregistra noi intervale de timp. De exemplu:
function my_additional_schedules($schedules) {
// interval în secunde
$schedules['every2min'] = array('interval' => 2*60, 'display' => 'La fiecare două minute');
return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');

Puteți (și probabil ar trebui în orice caz, cron sau nu) să configurați jurnalul de erori PHP pentru a captura toate erorile.
