J'ai une fonction WordPress que je veux exécuter une fois par jour à une heure précise. Comment dois-je m'y prendre, puisque WP cron ne peut pas être réglé sur une heure particulière?
vous pouvez absolument utiliser wp_cron pour spécifier une heure:
add_action( 'my_scheduled_event', 'prefix_my_scheduled_event' );
/**
* On the scheduled action hook, run a function.
*/
function prefix_my_scheduled_event() {
// do something
}
//going to use the strtotime function, so a good habit to get into is to set the PHP timezone to UTC
default_timezone_set( 'UTC' );
//define a timestamp to run this the first time. 4:20 is as good a time as any.
$timestamp = strtotime( '2013-12-14 16:20:00' );
//set a recurrence interval - WP has three default intervals: hourly, daily & twicedaily
$recurrence = 'daily';
//define the hook to run
$hook = 'my_scheduled_event'
//you can pass arguments to the hooked function if need be. this parameter is optional:
$args = null;
//the following will run your function starting at the time defined by timestamp and recurring every $recurrence
wp_schedule_event( $timestamp, $recurrence, $hook, $args );
Ceci est un exemple simplifié. Un certain type de vérification doit être effectué pour ne pas vous retrouver avec une charge en bateaux d'hameçons planifiée, mais cela devrait vous donner une idée de la façon de le configurer pour une heure donnée. De plus, il faut comprendre que wp_cron est déclenché par des chargements de page. Par conséquent, si votre site n'a pas un trafic important, la fonction ne se déclenchera pas précisément à l'heure définie. Il existe des solutions de contournement pour cela cependant.
Juste pour ajouter à la réponse de @Will the Web Mechanic. J'avais besoin d'utiliser
date_default_timezone_set()
default_timezone_set n'a pas fonctionné pour moi