Как автоматически создавать и управлять копиями постов в WordPress

В процессе ведения сайта на WordPress нередко возникает необходимость создавать копии записей — для резервного сохранения, тестирования изменений или публикации похожего контента с небольшими правками. В этой статье разберём, как автоматизировать создание дубликатов постов, а также управлять ими эффективно, используя как готовые плагины, так и собственный код.

Зачем нужна автоматическая копия поста в WordPress

Ручное дублирование поста может отнимать много времени особенно при большом объёме контента. Автоматизация этой задачи позволяет:

  • Создавать резервные копии перед внесением важных изменений;
  • Упрощать создание похожих материалов без необходимости писать всё с нуля;
  • Обеспечивать тестирование новых шаблонов или плагинов на копиях без риска повредить оригинал;
  • Автоматически дублировать записи для создания версий на разных языках или в рамках A/B тестирования.

Существуют разные подходы к реализации этой задачи, рассмотрим их подробно.

Плагины для автоматического дублирования постов

Самый простой способ — использовать готовые решения. Вот несколько популярных плагинов с возможностью автоматического создания копий:

1. Duplicate Post (Yoast Duplicate Post)

Один из самых популярных плагинов для дублирования страниц и постов. Позволяет создавать копии вручную и настраивать права доступа к этой функции.

Для автоматизации можно добавить вызов дублирования через хук или по условию с помощью кода.

2. WP Staging

Сервис для создания клона всего сайта. Подойдёт, если нужно дублировать не только посты, а целые разделы или тестовую среду.

3. Post Duplicator

Минималистичный плагин для быстрого копирования записей. Имеет простой интерфейс и может использоваться совместно с WP-Cron для автоматизации.

Автоматизация создания копий постов с помощью кода

Если вам нужно более гибкое и интегрированное решение, можно написать свой код. Например, реализуем функцию wpbe_duplicate_post, которая создаст копию поста по ID.

function wpbe_duplicate_post($post_id) {
    $post = get_post($post_id);
    if (empty($post)) return false;

    $new_post = array(
        'post_title' => $post->post_title . ' (копия)',
        'post_content' => $post->post_content,
        'post_status' => 'draft',
        'post_type' => $post->post_type,
        'post_author' => $post->post_author
    );

    $new_post_id = wp_insert_post($new_post);

    // Копируем таксономии
    $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);
    }

    // Копируем метаданные
    $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));
        }
    }

    return $new_post_id;
}

Эта функция создаёт черновик с копией контента, таксономий и метаданных.

Пример использования с WP-Cron для автоматического дублирования

Для автоматического создания копий, например, всех постов определённой категории по расписанию, можно добавить задачу в WP-Cron.

function wpbe_duplicate_posts_cron() {
    $posts = get_posts(array(
        'category_name' => 'news',
        'numberposts' => -1
    ));

    foreach ($posts as $post) {
        wpbe_duplicate_post($post->ID);
    }
}

if (!wp_next_scheduled('wpbe_daily_duplicate')) {
    wp_schedule_event(time(), 'daily', 'wpbe_daily_duplicate');
}
add_action('wpbe_daily_duplicate', 'wpbe_duplicate_posts_cron');

Такой код будет раз в сутки создавать копии всех постов категории «news».

Управление копиями и предотвращение дублирования

При автоматическом создании копий важно не создавать избыточное количество дубликатов и контролировать их состояние.

Идентификация дубликатов

Можно добавлять уникальные метаданные при создании копий, например, _wpbe_original_post_id с ID оригинала. Это позволит быстро находить и управлять копиями.

add_post_meta($new_post_id, '_wpbe_original_post_id', $post_id);

Удаление старых копий

Для автоматического удаления устаревших дубликатов можно создать WP-Cron задачу, которая будет удалять черновики старше определённого времени:

function wpbe_delete_old_duplicates() {
    $args = array(
        'post_type' => 'post',
        'post_status' => 'draft',
        'meta_key' => '_wpbe_original_post_id',
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '7 days ago'
            )
        ),
        'fields' => 'ids'
    );

    $old_duplicates = get_posts($args);
    foreach ($old_duplicates as $post_id) {
        wp_delete_post($post_id, true);
    }
}

if (!wp_next_scheduled('wpbe_weekly_delete_duplicates')) {
    wp_schedule_event(time(), 'weekly', 'wpbe_weekly_delete_duplicates');
}
add_action('wpbe_weekly_delete_duplicates', 'wpbe_delete_old_duplicates');

Интеграция с плагинами WPShop

Если вы используете темы и плагины с wpshop.ru, например, Clearfy Pro можно дополнительно оптимизировать производительность, минимизируя нагрузку при массовом копировании постов.

Также плагин WPRemark поможет при работе с комментариями к дубликатам, позволяя эффективно управлять обратной связью.

Выводы по автоматическому копированию постов в WordPress

Автоматизация создания копий постов — удобный инструмент для администраторов и разработчиков. Выбор между плагинами и собственным кодом зависит от задач и степени кастомизации. При необходимости интеграции с WPShop решениями стоит обратить внимание на их возможности по оптимизации и управлению контентом.

Используйте предложенные примеры кода и плагины, чтобы упростить работу с копиями записей и повысить эффективность управления сайтом на WordPress.

Как автоматизировать удаление старого контента в WordPress по дате и категории
23.01.2026
Автоматическое удаление неоплаченных заказов WooCommerce через 7 дней
21.04.2026
WooCommerce: как установить ограничения на количество товаров в корзине
30.04.2026
Как удалить все посты определённого автора в WordPress
19.02.2026
Как удалить автосохранения и ревизии в WordPress для оптимизации базы данных
21.03.2026