Если вы ведёте сайт на WordPress и вам часто нужно создавать копии существующих публикаций — например, для быстрого создания шаблонов статей, дублирования контента для тестов или подготовки похожих материалов, — то ручное копирование и вставка занимает слишком много времени. К счастью, автоматизировать этот процесс можно с помощью кода и плагинов. В этой статье подробно разберём, как реализовать автоматическое создание копий постов в WordPress, включая примеры кода и рекомендации по плагинам.
Зачем нужно автоматическое копирование постов в WordPress
Дублирование записей полезно в следующих сценариях:
- Создание шаблонов для будущих публикаций с одинаковой структурой и мета-данными.
- Тестирование изменений в копии статьи, не затрагивая оригинал.
- Резервное копирование перед массовой правкой или обновлением.
- Повторное использование контента с минимальными изменениями для разных категорий или аудитории.
Без автоматизации вы вынуждены вручную создавать новую запись, копировать содержимое и мета-данные, что отнимает много времени и увеличивает риск ошибок.
Плагины для создания копий постов в WordPress
Существует несколько популярных плагинов, которые решают задачу дублирования постов:
- Duplicate Post — один из самых популярных и простых плагинов. Позволяет копировать посты и страницы одним кликом, при этом можно настроить, что именно копировать (контент, мета, статусы и т.д.).
- Yoast Duplicate Post — официальное обновление Duplicate Post от разработчиков Yoast, с улучшенной интеграцией и поддержкой.
- Post Duplicator — минималистичный плагин с базовой функциональностью дублирования.
Все эти плагины можно найти и скачать с официального репозитория WordPress. Для установки достаточно зайти в админ-панель, выбрать "Плагины" → "Добавить новый" и в поиске ввести название. После активации появится кнопка «Дублировать» рядом с каждым постом.
Как создать автоматическое копирование постов программно
Если вы хотите более гибко управлять процессом и интегрировать его в свои рабочие процессы, можно написать собственную функцию. Ниже пример кода, который создаёт копию поста по его ID с сохранением всех мета-полей и таксономий.
function wpedu_duplicate_post_by_id($post_id) {
$post = get_post($post_id);
if (!$post) return new WP_Error('post_not_found', 'Пост не найден');
$new_post = array(
'post_title' => $post->post_title . ' (копия)',
'post_content' => $post->post_content,
'post_status' => 'draft',
'post_type' => $post->post_type,
'post_author' => get_current_user_id(),
'post_excerpt' => $post->post_excerpt,
'post_parent' => $post->post_parent
);
$new_post_id = wp_insert_post($new_post);
if (is_wp_error($new_post_id)) return $new_post_id;
// Копируем мета-поля
$meta = get_post_meta($post_id);
foreach ($meta as $key => $values) {
foreach ($values as $value) {
add_post_meta($new_post_id, $key, maybe_unserialize($value));
}
}
// Копируем таксономии
$taxonomies = get_object_taxonomies($post->post_type);
foreach ($taxonomies as $taxonomy) {
$terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
wp_set_object_terms($new_post_id, $terms, $taxonomy, false);
}
return $new_post_id;
}
Эта функция создаёт черновик копии указанного поста, включая мета-данные и таксономии. Вы можете вызвать её, передав ID нужной записи:
$new_id = wpedu_duplicate_post_by_id(123);
if (is_wp_error($new_id)) {
echo 'Ошибка: ' . $new_id->get_error_message();
} else {
echo 'Пост успешно продублирован, новый ID: ' . $new_id;
}
Автоматизация создания копий по расписанию
Если нужно регулярно дублировать определённые посты (например, для обновления шаблонов), можно использовать планировщик задач WP-Cron. Пример добавления планировщика:
function wpedu_schedule_duplicate_post() {
if (!wp_next_scheduled('wpedu_duplicate_post_cron_hook')) {
wp_schedule_event(time(), 'daily', 'wpedu_duplicate_post_cron_hook');
}
}
add_action('wp', 'wpedu_schedule_duplicate_post');
add_action('wpedu_duplicate_post_cron_hook', 'wpedu_handle_scheduled_duplicate');
function wpedu_handle_scheduled_duplicate() {
$post_id = 123; // ID поста для копирования
wpedu_duplicate_post_by_id($post_id);
}
Этот код запускает копирование поста с ID 123 ежедневно. Вы можете менять частоту и ID поста под свои задачи.
Интеграция с плагином Expert Review для автоматизации копий отзывов
Если вы используете плагин Expert Review для отзывов, можно адаптировать функцию дублирования для копирования отзывов с сохранением всех параметров. Это удобно, когда нужно создать похожие отзывы для разных товаров или страниц.
Советы по использованию дублирования постов
- Всегда создавайте копии в статусе «черновик», чтобы не публиковать дубликаты случайно.
- Проверяйте мета-поля и таксономии, чтобы убедиться, что важные данные скопированы корректно.
- Используйте уникальные названия для копий, чтобы избежать путаницы.
- Для сложных проектов создавайте отдельный интерфейс или админ-страницу для управления копированием, используя примеры выше.
- Если дублирование выполняется часто и в большом объёме, следите за нагрузкой на базу данных и оптимизируйте код.
Заключение
Автоматическое создание копий постов в WordPress — очень полезный инструмент для ускорения работы с контентом. Вы можете использовать готовые плагины или написать собственные функции, которые максимально подойдут под ваши задачи. Представленные в статье примеры кода помогут быстро начать автоматизацию и улучшить рабочие процессы на вашем сайте.