Как создать беспроводной AJAX-черновик в WordPress

В современных проектах на WordPress часто возникает задача сохранить данные пользователя без перезагрузки страницы — например, при работе с формами или редакторами. Одним из эффективных решений является реализация AJAX-черновика, позволяющего автоматически сохранять изменения в фоне. В этой статье мы подробно разберём, как создать такой черновик с помощью AJAX, собственных функций WordPress и полезных плагинов.

Зачем нужен AJAX-черновик в WordPress

Стандартный редактор WordPress уже имеет функцию автосохранения, но часто её функционала недостаточно — например, при создании кастомных форм, сложных метабоксов или при разработке фронтенд-редакторов. AJAX-черновик:

  • Обеспечивает плавный пользовательский опыт — данные сохраняются без перезагрузки страницы.
  • Уменьшает риск потери информации при случайном закрытии вкладки или сбое.
  • Позволяет создавать собственные механизмы сохранения для нестандартных типов контента.

Реализовать такую функцию можно как собственными силами, так и с использованием плагинов, о которых расскажем ниже.

Создание собственного AJAX-черновика: пошаговое руководство

1. Регистрация AJAX-обработчика в WordPress

Для начала необходимо создать обработчик AJAX-запроса на стороне сервера. В файле functions.php вашей темы или в собственном плагине добавим функцию с префиксом journalx_ для уникальности и подключим её к AJAX-хукам:

add_action('wp_ajax_journalx_save_draft', 'journalx_save_draft_callback');
add_action('wp_ajax_nopriv_journalx_save_draft', 'journalx_save_draft_callback');

function journalx_save_draft_callback() {
    // Проверка nonce для безопасности
    check_ajax_referer('journalx_draft_nonce', 'nonce');

    $post_id = intval($_POST['post_id']);
    $content = wp_kses_post($_POST['content']);

    if (!$post_id || empty($content)) {
        wp_send_json_error('Некорректные данные');
    }

    $post_data = array(
        'ID'           => $post_id,
        'post_content' => $content,
        'post_status'  => 'draft',
    );

    $updated_id = wp_update_post($post_data, true);

    if (is_wp_error($updated_id)) {
        wp_send_json_error($updated_id->get_error_message());
    }

    wp_send_json_success('Черновик сохранён');
}

2. Добавление JavaScript для отправки данных AJAX

Теперь необходимо добавить скрипт, который будет отправлять данные на сервер без перезагрузки. Для этого подключим JS в футере темы и передадим параметры AJAX:

function journalx_enqueue_scripts() {
    wp_enqueue_script('journalx-ajax-script', get_template_directory_uri() . '/js/journalx-ajax.js', array('jquery'), null, true);

    wp_localize_script('journalx-ajax-script', 'journalx_ajax_obj', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce'    => wp_create_nonce('journalx_draft_nonce'),
    ));
}
add_action('wp_enqueue_scripts', 'journalx_enqueue_scripts');

В файле js/journalx-ajax.js напишем следующий код:

jQuery(document).ready(function($) {
    $('#journalx-content').on('input', function() {
        var content = $(this).val();
        var post_id = $('#journalx-post-id').val();

        $.ajax({
            url: journalx_ajax_obj.ajax_url,
            type: 'POST',
            data: {
                action: 'journalx_save_draft',
                nonce: journalx_ajax_obj.nonce,
                post_id: post_id,
                content: content
            },
            success: function(response) {
                if (response.success) {
                    $('#journalx-status').text('Сохранено');
                } else {
                    $('#journalx-status').text('Ошибка сохранения');
                }
            },
            error: function() {
                $('#journalx-status').text('Ошибка AJAX');
            }
        });
    });
});

Для работы скрипта на странице должен быть простой HTML:

<textarea id="journalx-content"></textarea>
<input type="hidden" id="journalx-post-id" value="123" />
<div id="journalx-status"></div>

Полезные плагины для создания AJAX-черновиков и расширения функциональности

Если хотите использовать готовые решения или дополнить функционал, обратите внимание на следующие плагины:

  • Clearfy Pro — улучшает производительность и безопасность сайта, среди функций есть оптимизация AJAX-запросов.
  • Expert Review — помогает организовать отзывы и комментарии с AJAX-подгрузкой, что можно адаптировать под черновики.
  • WPGPT — плагин с интеграцией ChatGPT, который можно использовать для автоматического создания контента и сохранения его через AJAX.

Все эти плагины доступны на WPSHOP.RU и легко интегрируются в проекты на WordPress.

Советы по безопасности и оптимизации AJAX-черновиков

Используйте nonce для защиты

Обязательно применяйте check_ajax_referer для предотвращения CSRF-атак. В коде мы уже показали, как это реализовать.

Обрабатывайте ошибки корректно

В ответах AJAX возвращайте JSON с информацией об ошибках, чтобы пользователь видел причину, если что-то пошло не так.

Минимизируйте количество запросов

Вместо отправки данных на каждый ввод используйте debounce или отправляйте изменения через определённые интервалы времени. Это снизит нагрузку на сервер и улучшит UX.

Кэширование и оптимизация нагрузки

Если черновики создаются часто, подумайте о кэшировании или временном хранении данных на клиенте до отправки на сервер.

Заключение по созданию AJAX-черновика в WordPress

Реализация беспроводного AJAX-черновика — отличное решение для повышения удобства работы с контентом в WordPress. Мы рассмотрели создание собственного обработчика, подключение JS и лучшие практики безопасности. Для более сложных задач можно использовать плагины из экосистемы WPSHOP.RU, которые расширят функциональность вашего сайта.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как реализовать выделение синтаксиса в визуальном редакторе WordPress
18.12.2025
Как создать автоматическое отмечивание новых статей в WordPress
21.03.2026
Как создать автоматический журнал активности пользователей в WordPress
21.02.2026
Как убрать заголовок H1 из страницы WordPress: пошаговое руководство
09.11.2025
Как сделать автоматическое разделение статьи на страницы в WordPress
23.01.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙