web-dev-qa-db-fra.com

L'événement Wp cron est défini mais la fonction n'est pas activée.

Je suis un débutant WP cron qui essaie de créer une fonction de test.

J'ai donc une page de test avec ce code:

if ( ! wp_next_scheduled( 'do_this_in_an_hour' ) ) {
wp_schedule_single_event( time() + 40, 'do_this_in_an_hour' );
}

Et pour les tests:

echo wp_next_scheduled( 'do_this_in_an_hour' );

echo '<pre>';
$cron_jobs = get_option( 'cron' );
var_dump($cron_jobs);
echo '</pre>';

Et dans mon functions.php (pas sûr que je dois mettre cela là):

function do_this_in_an_hour() {
    wp_mail('[email protected]','this is a cron test!','great here is the massage!');
}
add_action( 'my_new_event', 'do_this_in_an_hour', 10, 3 );

Maintenant, je vois que le travail cron est ajouté au tableau des travaux cron et j’obtiens un timestemp pour la fonction next_scheduled et il est supprimé du tableau des travaux cron après l’actualisation lorsque le temps est écoulé (40 secondes), mais le courrier n’est pas envoi (bien sûr, dans le code réel, j’ai ma véritable adresse mail et j’ai testé la fonction mail seule et elle fonctionne).

Une idée de ce que je fais mal?

2
mondi

J'avais besoin du nom du hook et non du nom de la fonction, donc à la place de ceci:

if ( ! wp_next_scheduled( 'do_this_in_an_hour' ) ) {
wp_schedule_single_event( time() + 40, 'do_this_in_an_hour' );
}

Cette:

if ( ! wp_next_scheduled( 'my_new_event' ) ) {
wp_schedule_single_event( time() + 40, 'my_new_event' );
}
2
mondi