Vérifiez si la fonction est appelée par le travail cron
13
J'ai une fonction que je veux uniquement exécuter via un travail cron. Existe-t-il un moyen de vérifier qu'un événement planifié particulier appelle cette fonction et rien d'autre?
Btw: Vous ne recevez pas de prime si vous n'êtes pas récompensé. Comme vous avez déjà marqué une réponse comme solution, veuillez également donner à l'utilisateur la prime. Merci.
kaiser
Réponses:
18
WordPress a une constante DOING_CRONqui nous aide à savoir que nous faisons les tâches cron ou non. Il est défini dans un wp-cron.phpfichier.
Ainsi, vous pouvez vérifier cette constante dans votre code:
À partir de WordPress 4.8.0 wp_doing_cron()peut être utilisé à la place.
Joe
2
Jetez un œil à l ' »inspecteur Cron API« , que j'ai écrit pour la question # 18017 . Le plugin construit un tableau qui montre sur le shutdowncrochet / la fin de la page.
Il utilise la _get_cron_array()fonction pour récupérer toutes les actions enregistrées et planifiées. Une autre fonction utile est wp_get_schedules(). La troisième méthode consiste à appeler _get_cron_array()directement les données sous-jacentes en appelant get_option( 'cron' );- il est toujours préférable d'utiliser les fonctions d'API par défaut à partir de WP Core.
Si vous voulez savoir si vous êtes actuellement dans un Cron Job, vous pouvez le vérifier defined( 'DOING_CRON' ) AND DOING_CRON.
Je ne suis pas étudiant en développement (je suis juste un passionné) mais je pense que vous pouvez ajouter une action add_ à l'événement
C'est juste un CV ...
//to the eventif(your_condition){
add_action('original_event_to_hook','your_scheduled');}function your_scheduled(){//create a param here//And shedule your function with arg
wp_schedule_event(time(),'hourly','your_function', array('param_1'=>value));}function your_function($args){
$verification = $args['param_1'];if($verification){//OK//Eventually delete this schedule with this specific arg}}
Pour récupérer une liste de votre cron "your_function" où ont cet arg
//Get a filtered list of cron hooks function kw_filter_crons_hooks($hooks =false, $args =false){
$crons = get_option('cron');if(!$crons){
$crons[0]= NULL;}
$filter = array();
$cronlist = array();
$schedule = array();foreach($crons as $timestamp => $cron){//@param $hooks = string 'schedule'//@param $args = false//Return an array of cron task sheduled
$schedule[]= $cron;if(!$schedule && $hooks =='schedule'&& $args ==false){
$schedule[0]= NULL;}foreach($hooks as $hook){if(isset($cron[$hook])){//@param $hooks = array($hook);//@param $args = false//Return an array of cron task sheduled
$cronlist[]= $cron;if(!$cronlist && is_array($hooks)&& $args ==false){
$cronlist[0]= NULL;}if(!empty($args)){foreach($cronlist as $key => $value){foreach($value as $k => $v){foreach($v as $x => $y){foreach($args as $arg => $val){if($y['args'][$arg]== $val){//@param $hooks = array($hook);//@param $args = array($arg);//Return an array of cron task specified filtered by arg
$filter[$x]= $y;if(!$filter && is_array($hooks)&& is_array($args)){
$filter[0]= NULL;}}}}}}}}}}if(is_array($hooks)&& $args ===false&& $cronlist){return $cronlist;}elseif(is_array($hooks)&& is_array($args)&& $filter){return $filter;}elseif($hooks ==='schedule'&& $args ===false&& $schedule){return $schedule;}elseif($hooks ===false&& $args ===false&& $crons){return $crons;}else{returnfalse;}}//Usage
$cron_filtered = kw_filter_crons_hooks(array('your_function'), array('param_1'=>value));
var_dump($cron_filtered);
Réponses:
WordPress a une constante
DOING_CRON
qui nous aide à savoir que nous faisons les tâches cron ou non. Il est défini dans unwp-cron.php
fichier.Ainsi, vous pouvez vérifier cette constante dans votre code:
la source
wp_doing_cron()
peut être utilisé à la place.Jetez un œil à l ' »inspecteur Cron API« , que j'ai écrit pour la question # 18017 . Le plugin construit un tableau qui montre sur le
shutdown
crochet / la fin de la page.Il utilise la
_get_cron_array()
fonction pour récupérer toutes les actions enregistrées et planifiées. Une autre fonction utile estwp_get_schedules()
. La troisième méthode consiste à appeler_get_cron_array()
directement les données sous-jacentes en appelantget_option( 'cron' );
- il est toujours préférable d'utiliser les fonctions d'API par défaut à partir de WP Core.Si vous voulez savoir si vous êtes actuellement dans un Cron Job, vous pouvez le vérifier
defined( 'DOING_CRON' ) AND DOING_CRON
.la source
Je ne suis pas étudiant en développement (je suis juste un passionné) mais je pense que vous pouvez ajouter une action add_ à l'événement
C'est juste un CV ...
Pour récupérer une liste de votre cron "your_function" où ont cet arg
la source