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

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

Что такое автоматические сборки контента и зачем они нужны

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

Преимущества автоматизации:

  • Экономия времени на рутинной работе.
  • Своевременное обновление информации.
  • Снижение ошибок при копировании и форматировании.

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

Использование WP-Cron для автоматических заданий

В WordPress для запуска периодических задач существует механизм WP-Cron. Он позволяет настроить выполнение функций по расписанию — например, раз в час или ежедневно.

Для автоматической сборки контента нам нужно:

  1. Определить функцию, которая будет собирать и обрабатывать данные.
  2. Зарегистрировать задачу в WP-Cron.
  3. Настроить расписание.

Пример функции для автоматического создания записи из внешнего API

function wpaction_fetch_and_create_post() {
    $response = wp_remote_get('https://example.com/api/data');
    if (is_wp_error($response)) {
        return;
    }
    $data = json_decode(wp_remote_retrieve_body($response), true);
    if (empty($data['title']) || empty($data['content'])) {
        return;
    }
    $post_data = array(
        'post_title'   => sanitize_text_field($data['title']),
        'post_content' => wp_kses_post($data['content']),
        'post_status'  => 'publish',
        'post_author'  => 1,
        'post_type'    => 'post',
    );
    wp_insert_post($post_data);
}

// Хук для задания
add_action('wpaction_cron_hook', 'wpaction_fetch_and_create_post');

// Регистрация задачи
if (!wp_next_scheduled('wpaction_cron_hook')) {
    wp_schedule_event(time(), 'hourly', 'wpaction_cron_hook');
}

Этот код раз в час будет получать данные с API и создавать новые записи на сайте.

Кастомные расписания WP-Cron

По умолчанию WordPress поддерживает расписания: hourly, twicedaily и daily. Иногда нужны свои интервалы. Добавим, например, расписание раз в 30 минут:

function wpaction_custom_cron_schedules($schedules) {
    if (!isset($schedules['every_thirty_minutes'])) {
        $schedules['every_thirty_minutes'] = array(
            'interval' => 1800, // 30 минут в секундах
            'display'  => __('Каждые 30 минут')
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpaction_custom_cron_schedules');

Теперь вместо 'hourly' в wp_schedule_event можно использовать 'every_thirty_minutes'.

Плагины для автоматизации сборок контента

Если хочется минимизировать код, можно использовать проверенные плагины:

  • WP All Import — мощный импортёр с поддержкой CSV, XML и API. Позволяет автоматизировать импорт продуктов, статей и других данных.
  • WP RSS Aggregator — агрегатор RSS-лент, подходит для сбора новостей с разных источников с возможностью фильтрации и кастомизации.
  • WPRemark — плагин с расширенными возможностями автоматизации публикаций, который уже используется на wpaction.ru. Можно настроить автоматический импорт и публикацию с удобным управлением.

Например, WPRemark позволяет гибко настраивать источники, фильтры и расписания, что хорошо сочетается с WP-Cron.

Обработка и фильтрация контента перед публикацией

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

Пример обработки содержимого:

function wpaction_prepare_content($content) {
    // Удаляем все теги кроме базовых
    $allowed_tags = '<p><a><strong><em><ul><ol><li><br>';
    $content = strip_tags($content, $allowed_tags);

    // Преобразуем ссылки в nofollow
    $content = preg_replace_callback('#<a[^>]+>#is', function($matches) {
        $tag = $matches[0];
        if (strpos($tag, 'rel=') === false) {
            $tag = str_replace('<a', '<a rel="nofollow"', $tag);
        }
        return $tag;
    }, $content);

    return $content;
}

Вызывайте эту функцию перед публикацией контента, чтобы улучшить качество и безопасность.

Пример комплексного решения: автоматический импорт и публикация новостей с фильтрацией

Объединим всё в одном примере:

function wpaction_import_news() {
    $response = wp_remote_get('https://news.example.com/api/latest');
    if (is_wp_error($response)) {
        return;
    }
    $items = json_decode(wp_remote_retrieve_body($response), true);
    if (empty($items) || !is_array($items)) {
        return;
    }
    foreach ($items as $item) {
        $title = sanitize_text_field($item['title']);
        $content = wpaction_prepare_content($item['description']);

        // Проверка на дубликаты
        $existing = get_page_by_title($title, OBJECT, 'post');
        if ($existing) {
            continue; // Пропускаем уже импортированные
        }

        $post_data = array(
            'post_title' => $title,
            'post_content' => $content,
            'post_status' => 'publish',
            'post_author' => 1,
            'post_type' => 'post',
        );
        wp_insert_post($post_data);
    }
}
add_action('wpaction_news_cron_hook', 'wpaction_import_news');

if (!wp_next_scheduled('wpaction_news_cron_hook')) {
    wp_schedule_event(time(), 'hourly', 'wpaction_news_cron_hook');
}

Этот код позволит автоматически каждую час импортировать свежие новости и публиковать их на сайте с базовой фильтрацией и проверкой на дубликаты.

Советы по безопасности и производительности

Автоматизация — это удобство, но и потенциальный риск. Чтобы избежать проблем:

  • Ограничивайте количество запросов к внешним источникам, чтобы сайт не тормозил.
  • Обрабатывайте и фильтруйте данные, чтобы избежать XSS и других атак.
  • Логируйте ошибки и успехи выполнения WP-Cron задач для отладки.
  • Используйте transient API для кэширования данных, чтобы уменьшить нагрузку.

Для кэширования можно добавить, например:

function wpaction_get_cached_data($url) {
    $cache_key = md5($url);
    $data = get_transient($cache_key);
    if ($data === false) {
        $response = wp_remote_get($url);
        if (is_wp_error($response)) {
            return false;
        }
        $data = wp_remote_retrieve_body($response);
        set_transient($cache_key, $data, HOUR_IN_SECONDS);
    }
    return $data;
}

Заключение

Создание автоматических сборок контента в WordPress — мощный способ сэкономить время и сделать сайт более динамичным. Используя WP-Cron, минимальный код для получения и обработки данных, а также подходящие плагины, можно построить гибкую систему импорта и публикации.

На wpaction.ru рекомендуем экспериментировать с WPRemark для расширенной автоматизации и использовать кастомные функции для тонкой настройки под свои задачи.

Как настроить отложенный запуск задач в WordPress без плагинов
07.01.2026
Как автоматизировать создание резервных копий WordPress без плагинов
01.02.2026
Обработка AJAX запросов в WordPress с примерами кода
21.11.2025
Как разделить библиотеку медиаконтента в WordPress по категориям
26.02.2026
Как использовать хуки для динамического изменения контента в WordPress
04.03.2026