J'essaie de planifier qui s'exécute toutes les cinq minutes.
Le code ci-dessous planifie avec succès le cron, et il apparaît dans WP Crontrol, mais "Faire un cron!" n'apparaît jamais dans le journal des erreurs.
Qu'est-ce qui ne va pas?
add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2); function do_cron_stuff() { error_log('Doing a cron!'); } add_filter('cron_schedules', 'cron_stuff_add_5_minute_cron_interval'); function cron_stuff_add_5_minute_cron_interval($schedules) { error_log("cron_stuff_add_5_minute_cron_interval called"); $schedules['five_minutes'] = [ 'interval' => 300, 'display' => esc_html__('Every Five Minutes') ]; return $schedules; } register_activation_hook(__FILE__, 'cron_stuff_plugin_activation'); function cron_stuff_plugin_activation() { error_log("cron_stuff_plugin_activation called"); if (wp_next_scheduled('do_cron_stuff_event') === false) { wp_schedule_event(time(), 'five_minutes', 'do_cron_stuff_event'); } } register_deactivation_hook(__FILE__, 'cron_stuff_plugin_deactivation'); function cron_stuff_plugin_deactivation() { error_log("cron_stuff_plugin_deactivation called"); wp_clear_scheduled_hook('do_cron_stuff_event'); }
3 Réponses :
Je pense que le problème est que vous spécifiez 2 $ allowed_args
pour
add_action('do_cron_stuff_event', 'do_cron_stuff', 10);
alors que do_cron_stuff
n'en accepte aucun. p >
Remplacez-le par
add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);
et voyez si cela fonctionne.
Merci, j'ai raté ça. Mon problème s'est avéré être quelque chose de différent, mais le nombre d'arguments devait également être corrigé.
WP-Cron fonctionne comme suit: à chaque chargement de page, une liste de tâches planifiées est vérifiée pour voir ce qui doit être exécuté. Toutes les tâches planifiées pour être exécutées seront exécutées pendant le chargement de cette page. WP-Cron ne fonctionne pas constamment comme le fait le système cron; il n'est déclenché qu'au chargement de la page. Des erreurs de planification peuvent se produire si vous planifiez une tâche pour 14 h 00 et qu'aucun chargement de page ne se produit avant 17 h 00. https://developer.wordpress.org/plugins/cron/
Cela signifie que vous devez déclencher (query) /wp-cron.php de l'extérieur toutes les 5 minutes.
Il s'avère que error_log
en fait a été appelé, mais comme il a été activé par un cron système, la sortie du journal des erreurs a été envoyée à un autre fichier journal des erreurs que l'habituel.
Pour résoudre ce problème, j'ai utilisé le troisième paramètre de la fonction error_log a> pour envoyer la sortie vers un fichier journal personnalisé.
voyez-vous
cron_stuff_plugin_activation appelé
appelé dans le journal?