add finished_callback
Этот коммит содержится в:
30
batch.php
30
batch.php
@@ -102,8 +102,25 @@ function batch_operations_process () {
|
||||
$parameters_array = $current_array['operations'][0][1];
|
||||
}
|
||||
$parameters_array[] = &$current_array['context'];
|
||||
|
||||
$current_array['message'] = '';
|
||||
|
||||
global $batch_operations_error_array;
|
||||
set_error_handler( 'batch_operations_error_handler' , E_NOTICE | E_WARNING );
|
||||
//run function
|
||||
call_user_func_array( $current_array['operations'][0][0], $parameters_array );
|
||||
//check error
|
||||
if ( ! empty($batch_operations_error_array) ) {
|
||||
$current_array['success'] = false;
|
||||
$current_array['error_operations'][] = array(
|
||||
'operation' => $current_array['operations'][0][0],
|
||||
'parameters' => $parameters_array,
|
||||
'error_array' => $batch_operations_error_array
|
||||
);
|
||||
$batch_operations_error_array = NULL;
|
||||
}
|
||||
|
||||
restore_error_handler();
|
||||
|
||||
if ( true == $current_array['context']['finished'] ) {
|
||||
$current_array['context']['sandbox'] = array();
|
||||
@@ -138,11 +155,21 @@ function batch_operations_process () {
|
||||
set_transient( 'batch_' . $id, $current_array , WEEK_IN_SECONDS );
|
||||
} else {
|
||||
delete_transient( 'batch_' . $id );
|
||||
if ( ! empty( $current_array['finished'] ) ) {
|
||||
call_user_func_array( $current_array['finished'], array( $current_array['success'], $current_array['context']['results'], $current_array['error_operations'] ) );
|
||||
}
|
||||
}
|
||||
|
||||
wp_send_json( $result );
|
||||
}
|
||||
|
||||
global $batch_operations_error_array;
|
||||
|
||||
function batch_operations_error_handler ($errno, $errmsg, $filename, $linenum, $vars) {
|
||||
global $batch_operations_error_array;
|
||||
$batch_operations_error_array=array($errno, $errmsg, $filename, $linenum, $vars);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Start batch operations
|
||||
@@ -221,6 +248,9 @@ function batch_operations_start( $batch_arr, $redirect = NULL )
|
||||
$batch_arr['successful_page'] = $redirect;
|
||||
}
|
||||
|
||||
$batch_arr['success'] = true;
|
||||
$batch_arr['error_operations'] = array();
|
||||
|
||||
if ( empty( $batch_arr['progress_message'] ) ) {
|
||||
$batch_arr['progress_message'] = __( 'Completed %current% of %total%.' );
|
||||
}
|
||||
|
Ссылка в новой задаче
Block a user