Швидше за все, ви знаєте, як болісно дублювати контент постів або сторінок, коли ви працюєте зі схожими структурами та хочете підтримувати узгоджене форматування. Вводити все це вручну може бути стомлюючим, і навіть при копіюванні та вставці ви ризикуєте припуститися помилки.
Дублювання контенту повинно бути таким складним. WordPress надає кілька методів – як вбудованих, так і через плагіни – для створення нових записів та сторінок, що ідентичні вже існуючим.
У цій статті коротко обговоримо, чому може знадобитися дублювати сторінку або запис у WordPress. І як це зробити із плагіном і без нього.
Коли може знадобитися дублювати сторінку або запис WordPress
Є кілька поширених сценаріїв, коли вам потрібно скопіювати сторінку або запис WordPress. Один із найпоширеніших – створення шаблонів для майбутнього контенту у своєму блозі.
Наприклад, якщо у ваших записах зазвичай використовується та сама структура і форматування, ви можете створити шаблон. Все, що вам потрібно зробити для подальших публікацій – це додати текст, зображення та інший необхідний контент.
Перш ніж вносити зміни, вам може знадобитися створити резервну копію запису або сторінки. Припустимо, що ви щойно виконали проектну роботу для клієнта, і він хоче її перевірити та внести зміни перед публікацією на сайті.
Слід зазначити одну важливу річ: наявність сторінок, що дублюються, або записів на вашому сайті не вигідна для пошукової оптимізації (SEO). Щоб уникнути подібних проблем, слід уникати публікації одного контенту двічі.
Як дублювати сторінку або запис у WordPress
Дублювання записів та сторінок може виконуватися з плагінами або без них. Ось кілька методів, які ви можете спробувати, залежно від ваших цілей та рівня навичок.
1. Використовуйте редактор блоків для дублювання вмісту
Цей метод використовує вбудований механізм дублювання, доступний із редактора блоків. Почніть із відкриття сторінки або публікації, яку хочете скопіювати.
Натисніть триточкове меню у верхньому правому кутку екрана. Виберіть варіант Копіювати весь вміст:
Потім можна створити новий пост і просто вставити в нього скопійований контент.
Зверніть увагу, що цей метод не копіює метадані, такі як заголовок публікації, таксономії (категорії та теги), або дані SEO, такі як ключові слова та метаописи. Однак, якщо ви створюєте шаблони для майбутнього контенту, це може працювати нормально.
2. Створення дублікатів записів та сторінок за допомогою плагіна
Доступно кілька плагінів для дублювання записів, сторінок та типів записів. Деякі популярні безкоштовні варіанти включають Дублікат сторінки та публікації, Копія публікації Yoast и Дублікат сторінки.
Незважаючи на їх заплутані назви, всі ці плагіни працюють дуже схоже та можуть клонувати декілька типів записів. Розглянемо приклад.
Встановіть та активуйте плагін. Як тільки це буде зроблено, для кожної публікації або сторінки у відповідних списках на вашій панелі керування WordPress буде додано дублювання посилання:
Коли ви натискаєте на опцію «Дублювати» створюється новий пост або сторінка з тим же заголовком, але як чернетка. Весь контент та метадані також копіюються.
Дивіться також:
Як створити інтерактивні зображення у WordPress.
3. Додайте до своєї теми варіант «Дублювати»
Є ще один спосіб додати без плагіна на сайт функцію дублювання. Цей метод передбачає редагування теми. Якщо ви волієте не встановлювати ще один плагін на свій сайт, але потрібно копіювати метадані між вашими записами, це допоможе вирішити ваше завдання.
Перед використанням цього методу обов'язково створіть резервну копію свого сайту. Ми також радимо використовувати дочірню тему. Це гарантує, що ви не втратите функцію дублювання під час оновлення теми в майбутньому.
Будемо використовувати вбудований редактор тем WordPress, щоб внести зміни до файлу functions.php:
Або отримати доступ до нього через протокол передачі файлів (FTP) за допомогою Filezilla. У будь-якому випадку вам потрібно буде додати до кінця файлу наступний код:
/* * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen */ function rd_duplicate_post_as_draft(){ global $wpdb; if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) { wp_die('No post to duplicate has been supplied!'); } /* * Nonce verification */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don't want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_name' => $post->post_name, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => 'draft', 'post_title' => $post->post_title, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order ); /* * insert the post by wp_insert_post() function */ $new_post_id = wp_insert_post( $args ); /* * get all current post terms ad set them to the new post draft */ $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag"); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"); if (count($post_meta_infos)!=0) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info->meta_key; if( $meta_key == '_wp_old_slug' ) continue; $meta_value = addslashes($meta_info->meta_value); $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query.= implode(" UNION ALL ", $sql_query_sel); $wpdb->query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) ); exit; } else { wp_die('Post creation failed, could not find original post: ' . $post_id); } } add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can('edit_posts')) { $actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate</a>'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 ); add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Останні два рядки включають можливість дублювання як записів, так сторінок. Якщо ви вирішите, що потрібна ця функція тільки для одного або іншого, ви можете видалити відповідний рядок.
Тепер ви маєте побачити параметр дублювати разом з іншими функціями для записів та сторінок у відповідних списках:
Ця функція дублювання трохи відрізняється від тієї, яку ми додали за допомогою плагіну вище. Коли ви натиснете на посилання, ви помітите, що нова чернетка відкривається в редакторі WordPress, так що ви можете відразу ж почати роботу над ним.
Можливо, ви захочете продублювати свої сторінки або записи, щоб створити шаблони для майбутнього контенту або зробити резервну копію записів, перш ніж вносити зміни до свого веб-сайту. Однак, незалежно від вашої причини є прості способи зробити це.
Нагадаємо ці три способи клонування публікації або дублювання сторінки в WordPress:
- Дублюйте контент без плагіна, використовуючи посилання Копіювати весь вміст у редакторі блоків.
- Використовуйте плагін, наприклад, Duplicate Page and Post, Duplicate Post або Duplicate Page.
- Додайте можливість дублювання, відредагувавши файл functions.php поточної теми.
Джерело: torquemag.io
Коментарі до запису: 2
Добридень! Вибачте у мене запитання. «Потім ви можете створити новий пост і просто вставити скопійований контент.» — а куди вставити?
Дякую. Працює на останній на сьогоднішній день версії вордпресу