Скорее всего, вы знаете, как мучительно дублировать контент постов или страниц, когда вы работаете с похожими структурами и хотите поддерживать согласованное форматирование. Вводить все это вручную может быть утомительно, и даже при копировании и вставке вы рискуете допустить ошибку.
Дублирование контента не должно быть таким сложным. WordPress предоставляет несколько методов – как встроенных, так и через плагины – для создания новых записей и страниц, идентичных уже существующим.
В этой статье кратко обсудим, почему может потребоваться дублировать страницу или запись в WordPress. И как это сделать с плагином и без него.
Когда может понадобиться дублировать страницу или запись в WordPress
Есть несколько распространенных сценариев, когда вам нужно скопировать страницу или запись в WordPress. Один из наиболее распространенных – создание шаблонов для будущего контента в своем блоге.
Например, если в ваших записях обычно используется одна и та же структура и форматирование, вы можете создать шаблон. Все, что вам нужно сделать для последующих публикаций – это добавить текст, изображения и любой другой необходимый контент.
Вам может потребоваться создать резервную копию записи или страницы, прежде чем вносить в нее изменения. Предположим, что вы только что выполнили проектную работу для клиента, и он хочет ее проверить и внести изменения перед публикацией на сайте.
Следует отметить одну важную вещь: наличие дублирующихся страниц или записей на вашем сайте не выгодно для поисковой оптимизации (SEO). Чтобы избежать подобных проблем, следует избегать публикации одного и того же контента дважды.
Как дублировать страницу или запись в WordPress
Дублирование записей и страниц может выполняться с плагинами или без них. Вот несколько методов, которые вы можете попробовать, в зависимости от ваших целей и уровня навыков.
1. Используйте редактор блоков для дублирования содержимого
Этот метод использует встроенный механизм дублирования, доступный из редактора блоков. Начните с открытия страницы или публикации, которую хотите скопировать.
Нажмите трехточечное меню в правом верхнем углу экрана. Выберите вариант Копировать все содержимое:
Затем вы можете создать новый пост и просто вставить в него скопированный контент.
Обратите внимание, что этот метод не копирует метаданные, такие как заголовок публикации, таксономии (категории и теги), или данные SEO, такие как ключевые слова и метаописания. Однако, если вы просто создаете шаблоны для будущего контента, это может работать нормально.
2. Создание дубликатов записей и страниц с помощью плагина
Доступно несколько плагинов для дублирования записей, страниц и пользовательских типов записей. Некоторые популярные бесплатные варианты включают Duplicate Page and Post, Yoast Duplicate Post и Duplicate Page.
Несмотря на их запутанные названия, все эти плагины работают очень похоже и могут клонировать несколько типов записей. Рассмотрим на пример..
Установите и активируйте плагин. Как только это будет сделано, для каждой публикации или страницы в соответствующих списках на вашей панели управления 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
Добрый день! Извините у меня вопрос. «Затем вы можете создать новый пост и просто вставить в него скопированный контент.» — а куда вставить-то?..
Спасибо. Работает на последней на сегодняшний день версии вордпресса