В процессе разработки и тестирования тем, плагинов или функционала WordPress часто возникает необходимость быстро создать большое количество постов с разными датами публикации. Ручной ввод занимает много времени, а стандартные плагины не всегда позволяют гибко настраивать даты и контент. В этой статье я расскажу, как создать автоматический генератор временных постов на PHP, используя возможности WordPress, а также приведу примеры кода и рекомендации по применению.
Зачем нужен генератор временных постов в WordPress
Генератор временных постов полезен для разных задач:
- Тестирование отображения архивов, ленты, виджетов с учетом даты публикации.
- Отладка функционала, связанного с датами (например, отложенный постинг, автоматические рассылки, фильтрация по времени).
- Наполнение демо-сайтов контентом для презентаций и проверки дизайна.
- Анализ производительности при большом количестве публикаций.
При этом важно, чтобы посты создавались динамично, с разными датами и уникальным контентом, а не просто копировались одинаковые записи.
Как создать генератор временных постов: пошаговое руководство
Шаг 1. Создаем пользовательскую функцию для генерации постов
Для начала добавим в functions.php вашей темы или отдельного плагина функцию, которая будет создавать пост с заданными параметрами, включая дату публикации.
function wpgpt_create_temporary_post($title, $content, $post_date) {
$post_data = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_author' => 1, // ID автора, измените при необходимости
'post_date' => $post_date,
'post_type' => 'post'
);
$post_id = wp_insert_post($post_data);
return $post_id;
}
Эта функция принимает заголовок, содержимое и дату публикации, создает пост и возвращает его ID. Используем стандартную функцию wp_insert_post с параметром post_date, чтобы задать дату публикации явно.
Шаг 2. Автоматическая генерация множества постов с разными датами
Теперь создадим функцию, которая вызовет предыдущую в цикле и сгенерирует, например, 30 постов с датами за последние 30 дней.
function wpgpt_generate_temporary_posts_batch($count = 30) {
for ($i = 0; $i < $count; $i++) {
$date = date('Y-m-d H:i:s', strtotime("-{$i} days"));
$title = "Тестовый пост №" . ($i + 1);
$content = "Это автоматически сгенерированный тестовый пост для даты " . $date . ".";
wpgpt_create_temporary_post($title, $content, $date);
}
}
Вызывайте эту функцию один раз, например, через админ-панель, при отладке или используя WP-CLI.
Как вызвать генератор через WP-CLI
Если у вас есть доступ к консоли сервера, удобнее всего запускать генератор через WP-CLI, чтобы не создавать лишних кнопок в админке. Для этого создадим кастомную команду:
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('wpgpt_generate_posts', function($args, $assoc_args) {
$count = isset($assoc_args['count']) ? intval($assoc_args['count']) : 30;
wpgpt_generate_temporary_posts_batch($count);
WP_CLI::success("Создано {$count} временных постов.");
});
}
Теперь в консоли можно выполнить wp wpgpt_generate_posts --count=50 для создания 50 постов.
Оптимизация и безопасность при массовом создании постов
При генерации большого количества записей учитывайте следующие моменты:
- Запускайте генерацию в нерабочее время или на тестовом сервере, чтобы не нагружать продакшен.
- Добавьте проверку прав пользователя, если запускаете из админки.
- Используйте транзакции или batch-обработку, если нужно создать тысячи постов.
- Удаляйте тестовые записи после отладки, чтобы не засорять базу.
Пример плагина для удобного управления генерацией постов
Если хотите сделать более удобный интерфейс, можно создать простой плагин с формой в админке для запуска генерации. Вот пример базового кода администратора:
add_action('admin_menu', function() {
add_submenu_page('tools.php', 'Генератор постов WPGPT', 'Генератор постов', 'manage_options', 'wpgpt-post-generator', 'wpgpt_post_generator_page');
});
function wpgpt_post_generator_page() {
if (!current_user_can('manage_options')) {
wp_die('Доступ запрещен');
}
if (isset($_POST['wpgpt_generate'])) {
$count = intval($_POST['wpgpt_count']);
wpgpt_generate_temporary_posts_batch($count);
echo '<div class="updated notice">Создано ' . esc_html($count) . ' постов.</div>';
}
echo '<div class="wrap"><h1>Генератор временных постов</h1>';
echo '<form method="post">';
echo '<label>Количество постов: <input type="number" name="wpgpt_count" value="30" min="1" max="1000" /></label><br>';
echo '<input type="submit" name="wpgpt_generate" class="button button-primary" value="Создать" />';
echo '</form></div>';
}
Этот простой интерфейс позволит запускать генерацию прямо из админки без доступа к консоли.
Дополнительные возможности: генерация с кастомными полями и категориями
Для более сложных сценариев можно расширить функцию генерации, добавив:
- Присвоение случайных категорий и меток.
- Установка кастомных полей (например, для тестирования плагинов типа Clearfy Pro или Expert Review).
- Генерацию пользовательских типов записей.
Пример добавления категории и меток к посту:
function wpgpt_create_temporary_post_extended($title, $content, $post_date, $categories = [], $tags = []) {
$post_data = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_author' => 1,
'post_date' => $post_date,
'post_type' => 'post'
);
$post_id = wp_insert_post($post_data);
if ($post_id && !is_wp_error($post_id)) {
if (!empty($categories)) {
wp_set_post_categories($post_id, $categories);
}
if (!empty($tags)) {
wp_set_post_tags($post_id, $tags);
}
}
return $post_id;
}
Заключение
Автоматический генератор временных постов — мощный инструмент для разработчиков и тестировщиков WordPress. Он позволяет быстро создавать реальный контент с разными датами публикации, что облегчает отладку и демонстрацию сайтов. При необходимости вы можете расширить функционал генератора, интегрировать его с WP-CLI или админ-панелью, а также добавлять кастомные поля и таксономии.
Для скачивания готовых решений и плагинов, которые помогут с подобными задачами, рекомендую посетить WPShop.ru.