Для копирования или дублирования записей в 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 зависит от ваших технических навыков и желаемого уровня автоматизации. В большинстве случаев использование плагинов или функций шаблона будет легче и безопаснее.