Как скопировать, сдублировать записи?

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

1. Использование плагина: Самый простой способ сделать это - установить и активировать плагин, предназначенный для копирования записей. В WordPress есть множество плагинов, которые предлагают эту функциональность. Некоторые популярные плагины для копирования записей включают Duplicate Post, Duplicate Page и Post Duplicator. После установки и активации плагина вам будет доступна опция копирования для каждой записи в административной панели WordPress.

2. Использование функций шаблона: Если вы не хотите использовать плагин, вы также можете скопировать записи с помощью функций шаблона WordPress. Наиболее распространенным способом является использование функции wp_insert_post (). Вы можете создать новый экземпляр записи на основе существующей и передать все необходимые данные. Ниже приведен пример кода, который можно добавить в шаблон или файл функций вашей темы:

$source_post_id = 123; // ID исходной записи
$original_post = get_post( $source_post_id ); // Получаем исходную запись

if ( $original_post ) {
    $new_post = array(
        'post_title'   => $original_post->post_title,
        'post_content' => $original_post->post_content,
        'post_status'  => 'draft', // Новая запись будет сохранена как черновик
        'post_type'    => $original_post->post_type,
    );

    $new_post_id = wp_insert_post( $new_post ); // Создаем новую запись

    if ( $new_post_id ) {
        // Копируем мета данные и таксономии из исходной записи
        $original_meta_data = get_post_meta( $source_post_id );
        foreach ( $original_meta_data as $meta_key => $meta_values ) {
            foreach( $meta_values as $meta_value ) {
                add_post_meta( $new_post_id, $meta_key, $meta_value );
            }
        }

        $original_taxonomies = get_object_taxonomies( $original_post->post_type );
        foreach ( $original_taxonomies as $taxonomy ) {
            $terms = wp_get_post_terms( $source_post_id, $taxonomy );
            wp_set_object_terms( $new_post_id, wp_list_pluck( $terms, 'slug' ), $taxonomy, false );
        }

        // Отображаем сообщение об успехе и перенаправляем пользователя на новую запись
        echo "Запись успешно скопирована. <a href='" . get_permalink( $new_post_id ) . "'>Перейти к новой записи</a>";
        exit;
    } else {
        echo "Не удалось создать новую запись.";
    }
} else {
    echo "Не удалось получить исходную запись.";
}

3. Использование базы данных: Если нет возможности использовать плагин или функции шаблона, можно скопировать записи напрямую из базы данных. Для этого необходимо выполнить несколько SQL-запросов. Предварительно создайте резервную копию вашей базы данных, чтобы избежать потенциальных проблем.

-- Скопируйте запись в таблицу wp_posts, изменяя значение post_title и post_content
INSERT INTO wp_posts (post_title, post_content, post_status, post_type)
SELECT CONCAT(post_title, ' (Копия)'), post_content, post_status, post_type
FROM wp_posts
WHERE ID = 123; -- ID исходной записи

-- Скопируйте мета данные из таблицы wp_postmeta, изменяя post_id для новой записи
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT NEW_ID, meta_key, meta_value
FROM wp_postmeta
WHERE post_id = 123; -- ID исходной записи

-- Скопируйте таксономии из таблицы wp_term_relationships, изменяя object_id для новой записи
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id)
SELECT NEW_ID, term_taxonomy_id
FROM wp_term_relationships
WHERE object_id = 123; -- ID исходной записи

Помните, что использование прямых SQL-запросов требует некоторых навыков работы с базой данных и является менее безопасным в плане ошибок и конфликтов данных. Закончив, обязательно проверьте созданную запись и убедитесь, что все данные были правильно скопированы.

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