Как сделать автоматический импорт постов из JSON в WordPress

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

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

JSON — универсальный формат обмена данными, который широко используется в API и для хранения структурированной информации. Если у вас есть внешний источник с постами в формате JSON, автоматизация импорта позволит:

  • Экономить время: не нужно вручную копировать и вставлять контент.
  • Обеспечить регулярное обновление сайта свежими материалами.
  • Гарантировать корректность и структурированность данных на сайте.

Для примера рассмотрим, как настроить импорт из локального JSON файла и из внешнего URL.

Создание функции для импорта постов из JSON: пример кода

Ниже пример функции wpbloger_import_posts_from_json(), которая читает JSON, парсит записи и добавляет их в WordPress как посты типа post. Код нужно разместить в файле вашего дочернего шаблона или в отдельном плагине.

function wpbloger_import_posts_from_json($json_path) {
    if (!file_exists($json_path)) {
        return new WP_Error('file_not_found', 'JSON файл не найден');
    }

    $json_data = file_get_contents($json_path);
    $posts = json_decode($json_data, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return new WP_Error('json_error', 'Ошибка разбора JSON: ' . json_last_error_msg());
    }

    foreach ($posts as $post_data) {
        // Проверяем обязательные поля
        if (empty($post_data['title']) || empty($post_data['content'])) {
            continue;
        }

        // Подготовка массива для wp_insert_post
        $new_post = array(
            'post_title'   => sanitize_text_field($post_data['title']),
            'post_content' => wp_kses_post($post_data['content']),
            'post_status'  => 'publish',
            'post_author'  => 1, // ID автора, можно параметризовать
            'post_type'    => 'post'
        );

        // Вставляем пост
        $post_id = wp_insert_post($new_post);

        // Если есть категории
        if (!empty($post_data['categories']) && is_array($post_data['categories'])) {
            wp_set_post_categories($post_id, $post_data['categories']);
        }

        // Если есть теги
        if (!empty($post_data['tags']) && is_array($post_data['tags'])) {
            wp_set_post_tags($post_id, $post_data['tags']);
        }
    }

    return true;
}

Чтобы запустить импорт, вызовите функцию, например:

wpbloger_import_posts_from_json(get_template_directory() . '/data/posts.json');

Это позволит загрузить записи из файла posts.json в папке темы.

Импорт из внешнего URL с проверкой данных

Если JSON доступен по URL, используйте wp_remote_get() с обработкой ошибок:

function wpbloger_import_posts_from_url($url) {
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        return $response;
    }

    $body = wp_remote_retrieve_body($response);
    $posts = json_decode($body, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return new WP_Error('json_error', 'Ошибка разбора JSON: ' . json_last_error_msg());
    }

    // Далее можно использовать тот же цикл, что и в предыдущей функции
    foreach ($posts as $post_data) {
        // Аналогично вставляем посты
    }

    return true;
}

Плагины для импорта JSON в WordPress

Если хотите готовое решение, можно рассмотреть плагины с поддержкой JSON-импорта:

  • WP All Import — мощный импортёр с поддержкой любых форматов, включая JSON. Позволяет настраивать поля, фильтры, обновления существующих записей.
  • JSON Content Importer — бесплатный плагин для вставки данных из JSON с помощью шорткодов. Подходит для простых задач.
  • WP Ultimate CSV Importer — поддерживает CSV и JSON, умеет работать с таксономиями и метаполями.

Для примера, WP All Import предоставляет интуитивный интерфейс и мощные возможности, которые могут сэкономить время и снизить количество ошибок.

Автоматизация импорта через CRON и WP-Cron

Часто импорт нужно запускать регулярно. Для этого можно добавить задачу в WP-Cron. Пример регистрации и обработки CRON задачи:

add_action('wpbloger_cron_import_json', 'wpbloger_cron_import_function');

function wpbloger_cron_import_function() {
    $result = wpbloger_import_posts_from_url('https://example.com/posts.json');
    if (is_wp_error($result)) {
        error_log('Ошибка импорта: ' . $result->get_error_message());
    }
}

// Регистрация события при активации плагина или темы
if (!wp_next_scheduled('wpbloger_cron_import_json')) {
    wp_schedule_event(time(), 'hourly', 'wpbloger_cron_import_json');
}

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

Обработка ошибок и безопасность при импорте JSON

При работе с внешними данными всегда учитывайте следующие моменты:

  • Проверяйте корректность JSON через json_last_error().
  • Фильтруйте и очищайте полученный контент через sanitize_text_field(), wp_kses_post().
  • Ограничивайте права пользователя, под которым выполняется импорт.
  • Используйте nonce и другие методы защиты, если импорт запускается через интерфейс.

Это поможет избежать взломов и ошибок в работе сайта.

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

⭐⭐⭐⭐⭐
Как создать уникальный плагин WordPress с нуля: пошаговое руководство
22.11.2025
Как удалить или изменить метаданные медиафайлов в WordPress без плагинов
04.01.2026
Как использовать хук pre_get_posts для оптимизации SQL-запросов в WordPress
06.05.2026
Как использовать WPRemark для автоматического сбора отзывов в WordPress
14.04.2026
Как настроить кэширование в WordPress для ускорения сайта
09.01.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше