Почему wp_send_json_success останавливает выполнение скрипта
После того, как отправляю JSON клиенту функция cleanTmpFormDirectory() не выполняется. Если использовать ее до вызова JSON, то метод выполнится. Почему это происходит? wp_send_json_success останавливает дальнейшее выполнение скрипта действуйя как die()?
function form_handler() {
check_ajax_referer( 'myajax-nonce', 'nonce_code');
require_once( get_template_directory() . '/services/form-handler/mail-handler/index.php');
$user_files = $_FILES['file'];
if(isFilesValid($user_files)) {
$message = getMailBodyMessage($_REQUEST);
$attachment_pathes = getAttachmentPathes($user_files);
$isMailSended = wp_mail('[email protected]', 'PhotoshopWorkshop', $message, '', $attachment_pathes);
if($isMailSended) {
wp_send_json_success([
'response' => 'Mail has been sent'
], 200);
}
else {
wp_send_json_error([
'response' => 'Some error while sending mail'
], 500);
}
cleanTmpFormDirectory();
}
}
Ответы (1 шт):
Автор решения: Eugene X
→ Ссылка
Ответ: Да - Она работает как терминатор, и даёт ошибку если headers_sent.
Если очень нужно выполнить некий код после терминаторов exit и die. То можно использовать функцию register_shutdown_function которая обрабатывается по завершению всего скрипта.
register_shutdown_function('cleanTmpFormDirectory');
wp_send_json_error ...