Иногда при работе с WordPress возникает необходимость быстро создавать дубликаты существующих записей — например, для редактирования шаблона статьи без изменения оригинала или для быстрого создания похожих материалов. В этой статье разберем, как автоматизировать процесс создания копий постов, используя плагины и собственный код, а также рассмотрим практические советы по оптимизации и безопасности.
Почему полезно создавать копии постов автоматически
Создание копий вручную через админ-панель WordPress — это долго и неудобно, особенно если требуется массовое дублирование или автоматизация в рамках бизнес-процессов. Автоматизация позволяет:
- Экономить время при подготовке новых статей на основе шаблонов;
- Избегать ошибок копирования контента, метаданных и таксономий;
- Легко создавать резервные копии материалов перед массовыми изменениями;
- Настраивать автоматическое создание черновиков для дальнейшей доработки.
Для этих целей можно использовать как готовые плагины, так и создавать собственные решения под конкретные задачи.
Плагины для автоматического дублирования постов
Среди популярных и проверенных решений выделим следующие плагины:
- Duplicate Post — классика для копирования записей с настройками по умолчанию. Позволяет быстро дублировать посты, страницы и кастомные типы записей прямо из списка материалов.
- Post Duplicator — простой и легкий плагин с опцией копирования таксономий и метаданных.
- WP Content Copy Protection & No Right Click — не только дублирование, но и защита контента от копирования, полезен если нужно дублировать и при этом ограничить доступ.
Все эти плагины легко установить и настроить через админ-панель WordPress. Однако для более тонкой автоматизации и интеграции с бизнес-логикой лучше использовать собственный код.
Как создать функцию автоматического дублирования поста в WordPress
Ниже приведен пример функции с префиксом wpcodex_, которая дублирует пост по ID и возвращает ID нового поста. Функция копирует контент, заголовок, статус, метаданные и таксономии.
function wpcodex_duplicate_post_by_id($post_id) {
$post = get_post($post_id);
if (null === $post) return 0;
$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
);
// Вставляем новый пост и получаем ID
$new_post_id = wp_insert_post($new_post);
if ($new_post_id == 0) return 0;
// Копируем метаданные
$post_meta = get_post_meta($post_id);
foreach ($post_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' => 'ids'));
wp_set_object_terms($new_post_id, $terms, $taxonomy);
}
return $new_post_id;
}
Эту функцию можно вызывать из админки или привязать к AJAX-запросу для удобства. Например, чтобы создать копию поста с ID 123, достаточно вызвать:
$new_post_id = wpcodex_duplicate_post_by_id(123);
if ($new_post_id) {
echo 'Копия создана, ID: ' . $new_post_id;
} else {
echo 'Ошибка при создании копии';
}
Автоматическое дублирование при сохранении поста
Можно настроить автоматическое создание копии при каждом сохранении поста — например, для резервного хранения предыдущей версии. Для этого добавим хук save_post:
function wpcodex_auto_duplicate_on_save($post_id) {
// Избегаем бесконечной петли
remove_action('save_post', 'wpcodex_auto_duplicate_on_save');
// Копируем пост
$copy_id = wpcodex_duplicate_post_by_id($post_id);
// Можно здесь добавить логирование или уведомление
// Возвращаем хук
add_action('save_post', 'wpcodex_auto_duplicate_on_save');
}
add_action('save_post', 'wpcodex_auto_duplicate_on_save');
Учтите, что такой подход может привести к большому количеству копий, поэтому стоит добавить условия, например, проверку типа поста или статуса.
Оптимизация и безопасность при автоматическом дублировании
При массовом дублировании важно контролировать нагрузку на сервер и базу данных. Советую:
- Использовать транзакции или отложенные задачи через WP Cron для больших объемов;
- Ограничивать права на запуск дублирования — только для администраторов или редакторов;
- Проверять входные данные и избегать дублирования без необходимости;
- Периодически очищать старые копии, если они создаются автоматически.
Если вы используете плагин Clearfy Pro, он поможет оптимизировать базу данных, удаляя ненужные ревизии и автосохранения, что особенно полезно при частом дублировании.
Пример интеграции с плагином WPGPT для генерации контента после дублирования
Если вы хотите после создания копии автоматически обновить или дополнить контент с помощью искусственного интеллекта, можно связать функцию дублирования с плагином WPGPT. Например, после копирования вызвать функцию генерации нового текста и обновить пост.
Это расширит возможности автоматизации и поможет создавать уникальный контент, начиная с шаблона.
Выводы
Автоматическое создание копий постов в WordPress — удобный инструмент для ускорения работы с контентом и управления сайтами с большим объемом материалов. Используйте готовые плагины для простых задач или внедряйте собственные функции для гибкой и мощной автоматизации. Не забывайте про оптимизацию и безопасность, чтобы процесс не влиял негативно на производительность сайта.