wpurok.ru wordpress WPUrok

Как создать автоматическое сохранение черновика в WordPress

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

Почему стандартное автосохранение WordPress не всегда достаточно

WordPress по умолчанию сохраняет черновики через AJAX каждые 60 секунд. Однако в некоторых случаях этого недостаточно:

  • Интервал сохранения нельзя легко настроить через админку.
  • При больших проектах данные могут теряться, если соединение нестабильное.
  • Автосохранение не учитывает кастомные мета-поля и сложные настройки блоков.

Поэтому многие разработчики и сайты с большим объемом контента нуждаются в более гибком решении.

Создание собственного автосохранения черновиков с помощью JavaScript и PHP

Добавляем JavaScript для периодического сохранения

Ниже пример простого скрипта, который будет отправлять AJAX-запрос на сервер с содержимым редактора каждые 30 секунд. Это позволит реализовать кастомное автосохранение.

function wpurok_autosave_init() {
  if ('undefined' === typeof wpurokAutosaveInterval) {
    var wpurokAutosaveInterval = setInterval(function() {
      var postID = document.getElementById('post_ID').value;
      var content = tinymce.get('content') ? tinymce.get('content').getContent() : document.getElementById('content').value;
      var data = {
        action: 'wpurok_autosave',
        post_id: postID,
        content: content,
        security: wpurok_ajax_obj.nonce
      };
      jQuery.post(wpurok_ajax_obj.ajax_url, data, function(response) {
        if(response.success) {
          console.log('Черновик сохранён');
        } else {
          console.log('Ошибка сохранения');
        }
      });
    }, 30000); // 30 секунд
  }
}

jQuery(document).ready(function() {
  wpurok_autosave_init();
});

Этот скрипт можно подключить в админке WordPress через хук admin_enqueue_scripts, передав ajax_url и nonce для безопасности.

Обработка AJAX-запроса в PHP

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

add_action('wp_ajax_wpurok_autosave', 'wpurok_handle_autosave');
function wpurok_handle_autosave() {
  check_ajax_referer('wpurok_nonce', 'security');

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

  if (!$post_id || !current_user_can('edit_post', $post_id)) {
    wp_send_json_error('Недостаточно прав или неверный ID');
  }

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

  $updated = wp_update_post($post_data, true);

  if (is_wp_error($updated)) {
    wp_send_json_error('Ошибка обновления поста');
  } else {
    wp_send_json_success('Черновик сохранён');
  }
}

Эта функция проверяет права пользователя, обновляет контент поста и возвращает ответ для JS.

Расширение функционала автосохранения: работа с мета-полями и полным редактором Gutenberg

Если вы используете кастомные мета-поля или Gutenberg-блоки, простой подход с контентом не всегда подходит. Для сохранения мета-полей нужно дополнительно передавать их значения и обновлять через update_post_meta.

Пример передачи мета-поля:

var metaValue = jQuery('#my_meta_field').val();
var data = {
  action: 'wpurok_autosave',
  post_id: postID,
  content: content,
  my_meta: metaValue,
  security: wpurok_ajax_obj.nonce
};

И в PHP добавить:

if(isset($_POST['my_meta'])) {
  update_post_meta($post_id, 'my_meta_key', sanitize_text_field($_POST['my_meta']));
}

Для Gutenberg можно использовать REST API и сохранять весь объект поста через /wp/v2/posts/{id} с помощью JavaScript Fetch API. Это существенно сложнее, но даёт полный контроль.

Плагины для расширенного автосохранения и управления черновиками

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

  • Clearfy Pro — оптимизирует работу редактора и автосохранения, расширяет настройки.
  • WPCommunity — если нужна соцсеть с расширенным редактированием и автосохранением.
  • WPGPT — с помощью ИИ можно организовать интеллектуальное автосохранение и помощь авторам.

Пользовательские советы и рекомендации по автосохранению

При реализации автосохранения обратите внимание на:

  • Интервал сохранения — слишком частое может нагружать сервер, слишком редкое — опасно потерей данных.
  • Безопасность — используйте nonce и проверяйте права пользователя.
  • Обработка ошибок — уведомляйте пользователя, если сохранение не удалось.
  • Совместимость с плагинами и темами — тестируйте на вашем окружении.

Также можно добавить визуальный индикатор сохранения, чтобы пользователь понимал, что данные не потеряны.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее