如何在 WordPress 中復制頁面或帖子

已發表: 2023-02-12

在 WordPress 中復制頁面或帖子可能不僅僅意味著複製和粘貼內容。 您還可以保留頁面模板、SEO 數據和圖像,以便在重新設計網站或更新內容時節省時間。

幸運的是,在 WordPress 中復制頁面和帖子及其所有相關數據非常容易。 無論是否使用插件,都有一些簡單的方法可以完成工作。

在本文中,我們將了解如何安全地創建 WordPress 複製頁面克隆或發布,並介紹一些可以提供幫助的插件。 讓我們開始吧!

目錄
1.使用這些插件在 WordPress 中輕鬆克隆頁面
1.1. 1.重複發帖
1.2. 2.重複頁面和帖子
1.3. 3.重複頁面
1.4. 4.後期復印機
2.在沒有插件的情況下在 WordPress 中復制頁面
2.1. 1.通過funtions.php代碼啟用克隆
2.2. 2.手動複製和粘貼代碼以復制頁面
3.繼續學習 WP Engine

使用這些插件在 WordPress 中輕鬆克隆頁面

當您使用 WordPress 插件時,在 WordPress 中克隆頁面非常簡單,因為一切都在您的儀表板中完成。 插件也是複制帖子或頁面的最安全方式,因為您不會直接修改您網站的代碼。

如果您正在尋找合適的工具,這裡有四個值得一試的插件。

1.重複發帖

WordPress 頁面和帖子克隆的首選選項之一是 Duplicate Post。 這個流行的插件易於使用,可以克隆從頁面內容或帖子到相關評論的所有內容。 它還提供前綴或後綴選項,以區分您的原始帖子和克隆。

要使用此工具複製 WordPress 帖子,您只需:

  1. 安裝並激活插件。
  2. 在您的 WordPress 儀表板中,在克隆帖子時轉到“帖子” > “全部” ,或在克隆頁面時轉到“頁面” > “全部”
  3. 導航到要復制的原始頁面或帖子,然後單擊克隆以復制它。
  4. 可以選擇多個頁面或帖子,您可以使用批量操作一次克隆它們。

2.重複頁面和帖子

Duplicate Page and Post 沒有很多功能,但在速度上彌補了這一點。 這個輕量級的複制帖子插件是在 WordPress 中克隆帖子或頁面的最快方法之一,並且不會因不必要的花里胡哨而拖累您的網站。

要使用此插件克隆頁面或帖子,請使用以下步驟:

  1. 安裝並激活插件。
  2. 轉到Posts > AllPages > All ,具體取決於您要復制的內容。
  3. 將鼠標懸停在要克隆的頁面或帖子上。
  4. 單擊複製選項。

3.重複頁面

Duplicate Page 提供了一些其他克隆插件不提供的附加功能。 此插件將復制帖子、頁面和自定義帖子類型。 此外,您可以將生成的副本保存為草稿、待定、公共或私人。

要使用重複頁面,您只需要:

  1. 安裝並激活插件。
  2. 配置其設置以滿足您的需要。
  3. 轉到“頁面” > “全部”“帖子” > “全部”以查找您要復制的內容。
  4. 單擊複製此選項。

4.後期復印機

另一個簡單的克隆插件是 Post Duplicator。 此解決方案創建任何帖子或頁面的精確副本,包括自定義帖子類型、自定義字段和自定義分類法。 它快速且易於使用,不會給您的網站增加太多負擔。

要使用此工具複製內容,請執行以下步驟:

  1. 安裝插件並激活它。
  2. 導航到帖子>全部頁面>全部以查找要克隆的內容。
  3. 將鼠標懸停在帖子或頁面上。
  4. 單擊重複頁面重複帖子選項。

在沒有插件的情況下在 WordPress 中復制頁面

當然,您不必使用插件來克隆頁面或在 WordPress 中發帖。 這也可以手動完成,方法是編輯funtions.php文件或複制並粘貼相關代碼。 讓我們看看這兩種方法是如何工作的。

1.通過funtions.php代碼啟用克隆

克隆 WordPress 頁面或帖子的一種手動方法是編輯functions.php文件中的代碼。 雖然這很容易做到,但您確實需要謹慎並先備份您的網站。

要為帖子啟用克隆,您需要訪問您的functions.php文件並使用安全文件傳輸協議 (FTP) 或您喜歡的任何其他方法打開它進行編輯。 然後,您需要將以下代碼片段添加到文件末尾:

/*
* 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 儀表板。 當您將鼠標懸停在要復制的頁面或帖子上時,現在應該會出現一個複制按鈕。

2.手動複製和粘貼代碼以復制頁面

如果您不想編輯您的functions.php文件,您可以手動複製並粘貼您要克隆的頁面或帖子的代碼。 為此,您需要:

  1. 打開您要復制的頁面或帖子。
  2. 單擊更多工具和選項菜單。
  3. 選擇代碼編輯器
  4. 複製頁面或帖子的代碼。
  5. 單擊新帖子新頁面
  6. 在新帖子或頁面中,打開代碼編輯器
  7. 粘貼代碼。
  8. 單擊更多工具和選項菜單。
  9. 選擇可視化編輯器
  10. 新頁面或帖子現在應該是舊頁面或帖子的克隆。

此過程可能需要一點時間,您需要為要復制的每個頁面或帖子分別執行此操作。 這就是為什麼如果您要復制大量內容,我們建議您使用 WordPress 複製頁面插件。

繼續學習 WP Engine

通過頁面克隆可以輕鬆簡化您的 WordPress 體驗。 還有很多其他方法可以節省時間,例如在 WordPress 站點之間遷移頁面或帖子,甚至複製開發環境。

在 WP Engine,我們為希望為客戶打造出色數字體驗的開發人員提供最佳資源。 查看我們的計劃,立即開始!