Зачем нужна автопубликация опросов в WordPress
Если ваш сайт на WordPress регулярно публикует опросы, то ручное создание каждого из них — занятие утомительное и затратное по времени. Автоматизация этого процесса помогает экономить ресурсы, поддерживать постоянный поток контента и вовлекать аудиторию без лишних усилий. Особенно актуально для сайтов со свежими вопросами, например, новостных ресурсов или сообществ, где опросы меняются ежедневно или еженедельно.
Основная задача автопубликации — программно создавать и размещать опросы по расписанию или при наступлении определённых условий. Это можно сделать с помощью готовых плагинов, а также собственных скриптов, которые создают кастомные записи с опросами.
В этой статье мы разберём, как именно реализовать автопубликацию опросов на WordPress с примерами и рекомендациями.
Выбор плагина для опросов с поддержкой автопубликации
Обзор популярных плагинов с возможностью программного создания опросов
Сначала рассмотрим плагины, которые позволяют создавать опросы, и у которых есть программные API для добавления новых опросов из кода:
- YOP Poll: популярный плагин с поддержкой REST API, что позволяет создавать опросы через HTTP-запросы или PHP-код.
- Poll, Survey, Quiz & List by OpinionStage: мощный инструмент с возможностями интеграции и автопубликации через API.
- WP-Polls: простой и лёгкий плагин, поддерживающий создание опросов через функции и фильтры.
Для примера возьмём WP-Polls, так как он часто используется и предоставляет удобный API для создания опросов из кода.
Настройка WP-Polls для автопубликации
Сначала устанавливаем и активируем плагин WP-Polls. Затем для автопубликации мы будем создавать новые опросы программно через хук WordPress, используя собственную функцию wppolls_create_poll.
Пример кода: автоматическое создание опроса в WP-Polls по расписанию
Чтобы создавать опросы автоматически, используем WP-Cron — встроенный планировщик WordPress. Создадим задачу, которая будет запускаться, например, раз в неделю, и добавлять новый опрос.
function wppolls_create_poll() {
global $wpdb;
$question = 'Как вам новый дизайн сайта?';
$answers = array(
'Отлично',
'Нормально',
'Плохо'
);
// Добавляем вопрос в таблицу опросов
$wpdb->insert(
$wpdb->prefix . 'pollsq',
array(
'pollq_question' => $question,
'pollq_date' => current_time('mysql'),
'pollq_active' => 1
)
);
$poll_id = $wpdb->insert_id;
// Добавляем варианты ответов
foreach ($answers as $answer) {
$wpdb->insert(
$wpdb->prefix . 'pollsa',
array(
'polla_qid' => $poll_id,
'polla_answer' => $answer,
'polla_counter' => 0
)
);
}
}
// Регистрируем событие в WP-Cron
if (!wp_next_scheduled('wppolls_create_poll_event')) {
wp_schedule_event(time(), 'weekly', 'wppolls_create_poll_event');
}
add_action('wppolls_create_poll_event', 'wppolls_create_poll');В этом примере мы создаём новый опрос с тремя вариантами ответов каждую неделю. WP-Polls хранит вопросы в таблицах pollsq и pollsa. Мы напрямую вставляем данные в эти таблицы через объект $wpdb.
Обратите внимание, что для реального проекта нужно предусмотреть уникальность вопросов, динамическое формирование вариантов ответов и обработку ошибок.
Автоматическая публикация опросов в записях и на страницах
Использование шорткодов для вставки опросов
WP-Polls позволяет выводить опросы с помощью шорткода [poll id="123"], где 123 — ID опроса. После создания опроса программно можно автоматически создавать новую запись с этим шорткодом, чтобы опрос отображался на сайте.
function wppolls_create_post_with_poll($poll_id) {
$post_data = array(
'post_title' => 'Новый опрос от ' . date('d.m.Y'),
'post_content' => '[poll id="' . $poll_id . '"]',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post'
);
wp_insert_post($post_data);
}Эту функцию можно вызвать внутри wppolls_create_poll после добавления опроса, передав ей ID нового опроса.
Автоматизация публикаций с кастомным расписанием
WP-Cron поддерживает планирование событий с частотой, заданной разработчиком. Вы можете менять периодичность с 'hourly', 'daily', 'weekly' на собственные, добавляя фильтр cron_schedules. Это удобно, если опросы нужны, например, каждые 3 дня или два раза в неделю.
add_filter('cron_schedules', 'wppolls_custom_cron_schedule');
function wppolls_custom_cron_schedule($schedules) {
$schedules['every_three_days'] = array(
'interval' => 3 * 24 * 60 * 60, // 3 дня в секундах
'display' => 'Каждые 3 дня'
);
return $schedules;
}После этого при регистрации задачи укажите этот интервал.
Расширенные возможности: создание опросов с динамическими вопросами и вариантами
Получение данных из внешних источников
Часто опросы должны основываться на актуальной информации — например, заголовках новостей, товарах или событиях. Для этого можно использовать REST API или парсинг, чтобы сформировать массив вопросов и вариантов программно.
Например, получаем список категорий сайта и создаём опрос с вопросом о любимой категории.
function wppolls_create_dynamic_poll() {
$categories = get_categories(array('hide_empty' => false));
$question = 'Какая ваша любимая категория?';
$answers = array();
foreach ($categories as $cat) {
$answers[] = $cat->name;
}
// Далее вставляем вопрос и ответы так же, как в примере выше
// ...
}Обработка голосов и статистика
WP-Polls автоматически собирает и выводит статистику по опросам, но если вы создаёте кастомные решения, можно дополнительно сохранять результаты в пользовательских таблицах или метаданных постов для более гибкого анализа.
Заключение по теме автопубликации опросов в WordPress
Автоматизация создания и публикации опросов в WordPress — мощный инструмент для повышения вовлечённости аудитории и упрощения работы с контентом. Используя WP-Cron, API популярных плагинов и собственные функции, вы можете организовать стабильный поток свежих опросов с минимальными затратами времени.
Приведённые примеры кода помогут быстро стартовать и адаптировать процесс под нужды вашего сайта. Обязательно тестируйте код на тестовом сайте, прежде чем запускать в продакшн, и не забывайте о безопасности данных и пользовательском опыте.