У меня есть запланированное событие, которое запускается два раза в день в моем плагине, действие зарегистрировано с помощью
add_action('fhprw_action','fhprw_check_fetch');
function fhprw_check_fetch($args){
$type=$args['type'];
//do stuff according to $type
}
если я вручную вызываю a do_action('fhprw_action',array('type'=>'uk'));
при обновлении виджета, тогда функция получает $args в виде массива, и я могу получить $type из $args[‘type’] без проблем
но когда я планирую мероприятие с
wp_schedule_event(time() , 'twicedaily', 'fhprw_action',array('type'=>$instance['type'])); // ($instance['type'] will be 'uk')
затем функция получает $args в виде строки
$args = ‘uk’ вместо array(‘type’=>’uk’);
почему функция не получает массив для $args при вызове cron?
[редактировать]
запланированные события вызывают функцию обратного вызова со списком параметров, а не массивом параметров, поэтому моя функция обратного вызова для действия получит $arg1, $arg2 и т. д. и не сможет принять ассоциативный массив
Это может быть формулировка массива, поэтому попробуйте установить массив вне
wp_schedule_event
вызова:оказывается, что запланированное событие вызовет функцию обратного вызова,
call_user_func_array
что означает, что функция вызывается с помощью fhprw_check_fetch($arg1,$arg2,$arg3), а не fhprw_check_fetch($arrarg);В этом случае, если вы действительно хотите, чтобы аргументы возвращались в виде ассоциативного массива, вы могли бы запланировать с помощью
$args = array( array( 'type' => $instance['type'] ) );