Почему 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 ...
→ Ссылка