Eu tenho uma função que eu só quero executar através de um trabalho cron. Existe uma maneira de verificar se um determinado evento agendado está chamando essa função e não qualquer outra coisa?
Btw: Você não recebe recompensa de volta se não for recompensado. Como você já marcou uma resposta como solução, forneça também ao usuário a recompensa. Obrigado.
Kaiser #
Respostas:
17
WordPress tem uma constante DOING_CRON que nos ajuda a saber que estamos fazendo os trabalhos cron ou não. Está definido no wp-cron.phparquivo.
Portanto, você pode verificar essa constante no seu código:
Basta dar uma olhada no »Cron API inspector« , que escrevi para a pergunta # 18017 . O plug-in cria uma tabela que é mostrada no shutdowngancho / no final da página.
Ele usa a _get_cron_array()função para recuperar todas as ações registradas e agendadas. Outra função útil é wp_get_schedules(). A terceira maneira é chamar _get_cron_array()diretamente os dados subjacentes , chamando get_option( 'cron' );- ainda é melhor usar as funções padrão da API do núcleo do WP.
Se você deseja saber se está atualmente em um Cron Job, pode verificar defined( 'DOING_CRON' ) AND DOING_CRON.
Não estou estudando desenvolvimento (sou apenas um entusiasta), mas acho que você pode adicionar um add_action ao evento
É apenas um currículo ...
//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}}
Para recuperar uma lista do seu cron "sua_função", onde está este argumento
//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);
Respostas:
WordPress tem uma constante
DOING_CRON
que nos ajuda a saber que estamos fazendo os trabalhos cron ou não. Está definido nowp-cron.php
arquivo.Portanto, você pode verificar essa constante no seu código:
fonte
wp_doing_cron()
pode ser usado.Basta dar uma olhada no »Cron API inspector« , que escrevi para a pergunta # 18017 . O plug-in cria uma tabela que é mostrada no
shutdown
gancho / no final da página.Ele usa a
_get_cron_array()
função para recuperar todas as ações registradas e agendadas. Outra função útil éwp_get_schedules()
. A terceira maneira é chamar_get_cron_array()
diretamente os dados subjacentes , chamandoget_option( 'cron' );
- ainda é melhor usar as funções padrão da API do núcleo do WP.Se você deseja saber se está atualmente em um Cron Job, pode verificar
defined( 'DOING_CRON' ) AND DOING_CRON
.fonte
Não estou estudando desenvolvimento (sou apenas um entusiasta), mas acho que você pode adicionar um add_action ao evento
É apenas um currículo ...
Para recuperar uma lista do seu cron "sua_função", onde está este argumento
fonte