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

В этой статье подробно разберём, как реализовать автоматический импорт данных из JSON в WordPress. Такая задача часто возникает при необходимости синхронизировать внешние сервисы с сайтом, загружать контент или обновлять данные без ручного вмешательства. Мы рассмотрим решение, которое можно адаптировать под различные виды данных — от постов до пользовательских типов записей (CPT).

Почему JSON? Преимущества формата для импорта

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

Основные преимущества JSON:

  • Лёгкость парсинга средствами PHP.
  • Поддержка вложенных структур.
  • Широкая совместимость с внешними сервисами.

В итоге, знание работы с JSON позволит создавать гибкие решения для импорта любой информации.

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

Рассмотрим ключевые этапы:

  1. Получение JSON-данных — из файла на сервере, по URL или из API.
  2. Парсинг JSON и валидация данных.
  3. Обработка и сохранение данных в WordPress.
  4. Автоматизация запуска импорта (cron, WP-Cron).

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

Получение и парсинг JSON

Если файл локальный, используем стандартные функции PHP. Для загрузки с удалённого сервера — wp_remote_get().

function wpcodex_get_json_data($url_or_path) {
    if (filter_var($url_or_path, FILTER_VALIDATE_URL)) {
        $response = wp_remote_get($url_or_path);
        if (is_wp_error($response)) {
            return false;
        }
        $body = wp_remote_retrieve_body($response);
    } else {
        if (!file_exists($url_or_path)) {
            return false;
        }
        $body = file_get_contents($url_or_path);
    }

    $data = json_decode($body, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return false;
    }
    return $data;
}

Эта функция возвращает ассоциативный массив или false при ошибке.

Обработка и сохранение данных в WordPress

Предположим, в JSON содержатся данные постов с полями title, content и custom_field. Создадим функцию импорта:

function wpcodex_import_posts_from_json($data) {
    if (empty($data) || !is_array($data)) {
        return;
    }

    foreach ($data as $item) {
        if (empty($item['title']) || empty($item['content'])) {
            continue; // пропускаем некорректные записи
        }

        // Проверяем, существует ли пост с таким заголовком
        $existing = get_page_by_title($item['title'], OBJECT, 'post');
        if ($existing) {
            // Обновляем существующий пост
            $post_id = $existing->ID;
            wp_update_post([
                'ID' => $post_id,
                'post_content' => $item['content'],
            ]);
        } else {
            // Создаём новый пост
            $post_id = wp_insert_post([
                'post_title' => $item['title'],
                'post_content' => $item['content'],
                'post_status' => 'publish',
                'post_type' => 'post',
            ]);
        }

        if ($post_id && !is_wp_error($post_id) && !empty($item['custom_field'])) {
            update_post_meta($post_id, 'custom_field', sanitize_text_field($item['custom_field']));
        }
    }
}

Такая структура позволяет безопасно обновлять и добавлять записи.

Автоматизация запуска импорта с WP-Cron

Для регулярного обновления данных используем WP-Cron. Например, запускать импорт раз в сутки.

function wpcodex_schedule_import() {
    if (!wp_next_scheduled('wpcodex_daily_json_import')) {
        wp_schedule_event(time(), 'daily', 'wpcodex_daily_json_import');
    }
}
add_action('wp', 'wpcodex_schedule_import');

function wpcodex_do_daily_import() {
    $json_url = 'https://example.com/data.json';
    $data = wpcodex_get_json_data($json_url);
    wpcodex_import_posts_from_json($data);
}
add_action('wpcodex_daily_json_import', 'wpcodex_do_daily_import');

Не забудьте очистить cron при деактивации плагина.

Рекомендации по плагинам для импорта JSON в WordPress

Если хочется готовое решение с визуальным интерфейсом, можно обратить внимание на плагины:

  • WP Automatic — автоматический импорт из множества источников, включая JSON.
  • Clearfy Pro — оптимизация и автоматизация, в том числе улучшение работы с API.

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

Особенности обработки вложенных данных JSON

Если JSON содержит сложные вложенные структуры — например, массивы для метаданных или таксономий — нужно расширить обработку.

Пример сохранения категории и метаданных:

function wpcodex_import_with_tax_and_meta($data) {
    foreach ($data as $item) {
        // Создание или обновление поста
        $post_id = wp_insert_post([...]);

        // Таксономии
        if (!empty($item['categories'])) {
            wp_set_post_terms($post_id, $item['categories'], 'category');
        }

        // Мета поля
        if (!empty($item['meta'])) {
            foreach ($item['meta'] as $key => $value) {
                update_post_meta($post_id, sanitize_key($key), sanitize_text_field($value));
            }
        }
    }
}

Это даёт гибкость и позволяет импортировать комплексные данные.

Отладка и логирование при импорте

Для контроля процесса импорта полезно вести лог ошибок и успешных операций. Можно использовать встроенный error_log или создавать свой файл логов.

Пример простой записи ошибок:

function wpcodex_log($message) {
    if (WP_DEBUG === true) {
        error_log('[wpcodex-import] ' . $message);
    }
}

В ключевых местах добавьте вызовы wpcodex_log для отслеживания проблем.

WooCommerce: как автоматически удалять товары из корзины после успешной оплаты
03.06.2026
Как удалить автоматические повторяющиеся посты в WordPress
27.03.2026
Как создать автоматический импорт данных из JSON в WordPress с примерами кода
07.02.2026
Как создать собственный REST API в WordPress
13.11.2025
Автоматический экспорт постов в XML в WordPress: практическое руководство
31.12.2025