Автоматизация создания контента — важная задача для многих сайтов на WordPress, особенно если нужно регулярно собирать данные из разных источников, формировать сводки, новости или каталоги. В этой статье разберём, как на базе стандартных возможностей WordPress и с помощью минимального кода реализовать автоматические сборки контента, а также рассмотрим полезные плагины, которые могут упростить задачу.
Что такое автоматические сборки контента и зачем они нужны
Автоматические сборки — это процесс, когда ваш сайт самостоятельно собирает, обрабатывает и публикует информацию без ручного ввода. Например, импорт новостей с RSS, агрегирование отзывов, формирование каталогов или обзоров продуктов.
Преимущества автоматизации:
- Экономия времени на рутинной работе.
- Своевременное обновление информации.
- Снижение ошибок при копировании и форматировании.
Однако важно соблюдать баланс — полностью копировать чужой контент нельзя, нужен собственный анализ и оформление.
Использование WP-Cron для автоматических заданий
В WordPress для запуска периодических задач существует механизм WP-Cron. Он позволяет настроить выполнение функций по расписанию — например, раз в час или ежедневно.
Для автоматической сборки контента нам нужно:
- Определить функцию, которая будет собирать и обрабатывать данные.
- Зарегистрировать задачу в WP-Cron.
- Настроить расписание.
Пример функции для автоматического создания записи из внешнего 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 для расширенной автоматизации и использовать кастомные функции для тонкой настройки под свои задачи.