Как легко дублировать страницу/публикацию WordPress
Опубликовано: 2021-11-05
Дублирование существующего содержимого страниц или сообщений может быть полезным во многих ситуациях. Вы можете использовать основной пост/страницу в качестве шаблона и быстро выполнить свою задачу. Можете ли вы представить, сколько времени это будет стоить, если вам придется воссоздавать содержимое той же страницы/сообщения?
Ну, я не могу этого представить. К счастью, есть способы дублировать контент на странице/записи WordPress. В этом посте я покажу вам, как мгновенно дублировать страницу/публикацию WordPress.
Тогда начнем.
- Зачем дублировать страницу/сообщение WordPress?
- Дублирование контента в WordPress с помощью плагина
- Дублирование страницы/записи в WordPress без плагина
- Заключительные слова
Зачем дублировать страницу/сообщение WordPress?
Когда вы вносите новые изменения на свою страницу или сообщение, вам может потребоваться быстро клонировать страницу/сообщение.
Например, у вас есть страница продаж с множеством разделов; теперь вам нужно снова создать ту же страницу продаж для другого продукта, что вы будете делать? Создать всю страницу заново?
Конечно нет. Вы сможете получить точно такую же страницу, продублировав ее. Вы сможете сразу приступить к работе и сэкономить время. Вы можете дублировать страницу/публикацию WordPress двумя способами — 1. С плагином, 2. Без плагина.
Дублирование контента в WordPress с помощью плагина
Есть несколько плагинов, таких как Duplicate Page, Post Duplicator, Duplicate page и Post, Page и Any Custom Post; которые помогут вам мгновенно дублировать страницу / сообщение WordPress. Но самым популярным является Yoast Duplicate Post.
Сначала установите и активируйте плагин Yoast Duplicate Post из каталога плагинов WordPress.
На панели инструментов перейдите в «Публикация» -> «Все публикации». (Для дублирования страницы перейдите в Страницы -> Все страницы)
Теперь наведите курсор на любой пост, и вы увидите две новые опции — «Клонировать» и «Новый черновик».
Теперь нажмите на кнопку клонирования, чтобы продублировать пост.
Однако, если вы хотите создать клон и сразу же открыть его в редакторе сообщений, нажмите кнопку «Новый черновик».
Дублирование страницы/записи в WordPress без плагина
Если вы не хотите, чтобы количество установленных плагинов увеличивалось, вы можете воспользоваться этим методом. Это очень просто, все, что вам нужно сделать, это скопировать некоторые коды в файл function.php, и тогда вы сможете очень легко дублировать страницы/сообщения WordPress.
Примечание. Перед редактированием любого из файлов WordPress рекомендуется сначала сделать резервную копию вашего сайта.
Сначала перейдите во «Внешний вид» -> «Редактор тем» и нажмите «Функции темы». Теперь скопируйте следующий код и вставьте его сюда.
/* * 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. Неважно, используете ли вы плагин или нет; вы получите одинаковый результат в обоих случаях. Если у вас есть какие-либо вопросы или предложения, дайте мне знать через поле для комментариев ниже.