如何複製WordPress頁面或文章?

如何複製WordPress頁面或文章?

在 WordPress 中,並非每個頁面或文章都需要從頭開始建立。如果您已經設計了一個效能良好的登陸頁面、服務佈局或博文格式,複製該結構以供將來使用可以為您節省數小時的工作時間。

事實上,複製現有內容而不是手動重建,可以減少多達 60% 的製作時間,尤其是對於具有複雜佈局或重複格式的網站。

無論你是要重新設計網站的某些部分,還是要從現有資料中分離出新內容,抑或是為客戶建立模板,能夠快速複製頁面或文章都能讓你的工作流程更加高效。

本教學指南介紹了在 WordPress 中實現這一功能的兩種方法:使用外掛和手動操作。

為什麼要複製WordPress頁面或文章?

複製現有頁面或文章而不是每次都從零開始有幾個很好的理由。以下是幾種常見的使用情況:

  • 保持設計的一致性:如果你已經確定了一個頁面的佈局–無論是服務模板、產品頁面還是登陸頁面–複製它可以讓你更輕鬆地重複使用該結構,而無需從頭開始重新應用每一個細節。
  • 加快內容建立速度:當你在一個網站上建立多個具有相同格式的頁面時,複製基本佈局可以節省時間。這比手動建立每個頁面要快得多。
  • 進行佈局測試或內容實驗:如果你要做一些小的改動,看看哪種方式效果更好,比如調整標題、圖片或 CTA,那麼複製一個頁面就能為你提供一個安全的副本,而不會對你的原始內容造成風險。
  • 更快地翻譯內容:對於多語言網站來說,複製一個頁面會給你一個乾淨的起點。您可以在翻譯文字的同時保持原有結構的完整性。
  • 在安全的環境中進行更改:有些伺服器平臺提供內建的暫存功能。這意味著您可以複製一個頁面或文章,測試您所做的更改,並在準備就緒時才將其推送上線,而不會影響您的主網站。

注意:在多個 URL 上擁有相同的內容會使搜尋引擎感到困惑。為避免搜尋引擎最佳化問題,請在您希望索引的版本上設定規範標籤。大多數 SEO 外掛都能輕鬆管理這一點。

如何複製WordPress頁面或文章[2 種方法]

在外掛中複製頁面或文章主要有兩種方法–使用外掛或手動。使用外掛的方法比較簡單。

我們先來看看外掛方法,然後再看看手動方法。

方法 #1:使用外掛複製WordPress頁面或文章

手動複製頁面或文章似乎是最簡單的方法–複製內容,貼上到新的草稿中,然後就可以了。但這種方法不僅耗時,在某些情況下還存在風險。它很容易遺漏關鍵部分,如特色圖片、搜尋引擎最佳化後設資料或自定義佈局設定。如果你管理的是客戶作品或複雜的模板,一個被忽視的細節就會影響整個頁面的效果。

Gutenberg 中,使用編輯器設定選單中的“複製所有區塊”選項是一個稍微有效的方法。雖然這可以儲存區塊編輯器中的內容,但並不能繼承主要圖片、模板分配、元標題或描述等關鍵元素。您仍需手動填補這些空白。

古騰堡文章編輯器

要避免這些額外步驟,可以使用複製外掛。其中一個例子就是 Duplicate Page,它的有效安裝量已超過 300 萬。

Duplicate Page

下面介紹如何使用它:

1. 安裝外掛

從儀表板進入外掛 新增外掛,搜尋“Duplicate Page”,然後點選 立即安裝啟用

如果你是新手,請檢視我們的指南,瞭解如何安裝 WordPress 外掛

2. 調整設定

啟用後,訪問設定 Duplicate Page。你可以指定它與哪個編輯器配合使用,還可以選擇給複製分配什麼狀態(例如草稿)。完成設定調整後,點選儲存更改

Duplicate Page設定

3. 一鍵複製

轉到頁面或文章列表。在每個條目下,你會看到一個 “Duplicate…選項。點選它就能建立一個完整的副本,包括結構、後設資料和所有內容,並儲存為草稿。

複製頁面選項

就是這樣。使用外掛複製 WordPress 頁面和文章就是這麼簡單。

:該外掛有一個高階版本,具有額外的功能,但對於大多數使用者來說,免費外掛涵蓋了複製頁面和文章的核心需求。

方法 2:手動複製頁面或文章

如果你不想依賴外掛,可以透過編輯主題的 functions.php 檔案,直接在 WordPress 儀表盤中為文章和頁面新增複製連結。

在進行任何更改之前,請務必備份您的網站。在錯誤的地方出現一個小錯字就可能會破壞你的主題。

在本教程中,我將使用 FileZilla 來編輯 functions.php 檔案,並向您展示如何使用 WordPress 內建的主題檔案編輯器來完成同樣的操作。

1. 透過FTP連線到網站

開啟 FileZilla,使用 FTP 憑據(主機、使用者名稱、密碼和埠)進行連線。

FileZilla

2. 導航至主題資料夾

  • 轉到:public_html/wp-content/themes/your-active-theme-name/

主題資料夾

  • 右鍵單擊 functions.php,選擇檢視/編輯,在預設文字編輯器中開啟。

functions.php

3. 新增此自定義複製程式碼

在檔案底部貼上以下程式碼段:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// 在管理區新增 “複製我的文章”或 “複製我的頁面”連結
function clone_post_as_draft() {
global $wpdb;
if (!isset($_GET['post']) || !isset($_GET['duplicate_nonce']) || !wp_verify_nonce($_GET['duplicate_nonce'], basename(__FILE__))) {
return;
}
$post_id = absint($_GET['post']);
$original = get_post($post_id);
if (!$original) {
wp_die('Original content not found.');
}
$current_user = wp_get_current_user();
$new_post = array(
'post_title' => $original->post_title,
'post_content' => $original->post_content,
'post_status' => 'draft',
'post_type' => $original->post_type,
'post_author' => $current_user->ID,
'post_excerpt' => $original->post_excerpt,
'post_parent' => $original->post_parent,
'menu_order' => $original->menu_order,
'comment_status'=> $original->comment_status,
'ping_status' => $original->ping_status,
);
$new_post_id = wp_insert_post($new_post);
// Copy taxonomies
$taxonomies = get_object_taxonomies($original->post_type);
foreach ($taxonomies as $taxonomy) {
$terms = wp_get_object_terms($post_id, $taxonomy, ['fields' => 'slugs']);
wp_set_object_terms($new_post_id, $terms, $taxonomy, false);
}
// Copy post meta
$meta = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id");
foreach ($meta as $meta_info) {
if ($meta_info->meta_key === '_wp_old_slug') continue;
add_post_meta($new_post_id, $meta_info->meta_key, maybe_unserialize($meta_info->meta_value));
}
wp_redirect(admin_url('post.php?action=edit&post=' . $new_post_id));
exit;
}
add_action('admin_action_clone_post_as_draft', 'clone_post_as_draft');
function add_clone_link($actions, $post) {
if (current_user_can('edit_posts')) {
$type_label = ($post->post_type === 'page') ? 'Duplicate My Page' : 'Duplicate My Post';
$url = wp_nonce_url('admin.php?action=clone_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce');
$actions['clone'] = '<a href="' . esc_url($url) . '" title="Clone this item">' . $type_label . '</a>';
}
return $actions;
}
add_filter('post_row_actions', 'add_clone_link', 10, 2);
add_filter('page_row_actions', 'add_clone_link', 10, 2);
// 在管理區新增 “複製我的文章”或 “複製我的頁面”連結 function clone_post_as_draft() { global $wpdb; if (!isset($_GET['post']) || !isset($_GET['duplicate_nonce']) || !wp_verify_nonce($_GET['duplicate_nonce'], basename(__FILE__))) { return; } $post_id = absint($_GET['post']); $original = get_post($post_id); if (!$original) { wp_die('Original content not found.'); } $current_user = wp_get_current_user(); $new_post = array( 'post_title' => $original->post_title, 'post_content' => $original->post_content, 'post_status' => 'draft', 'post_type' => $original->post_type, 'post_author' => $current_user->ID, 'post_excerpt' => $original->post_excerpt, 'post_parent' => $original->post_parent, 'menu_order' => $original->menu_order, 'comment_status'=> $original->comment_status, 'ping_status' => $original->ping_status, ); $new_post_id = wp_insert_post($new_post); // Copy taxonomies $taxonomies = get_object_taxonomies($original->post_type); foreach ($taxonomies as $taxonomy) { $terms = wp_get_object_terms($post_id, $taxonomy, ['fields' => 'slugs']); wp_set_object_terms($new_post_id, $terms, $taxonomy, false); } // Copy post meta $meta = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id"); foreach ($meta as $meta_info) { if ($meta_info->meta_key === '_wp_old_slug') continue; add_post_meta($new_post_id, $meta_info->meta_key, maybe_unserialize($meta_info->meta_value)); } wp_redirect(admin_url('post.php?action=edit&post=' . $new_post_id)); exit; } add_action('admin_action_clone_post_as_draft', 'clone_post_as_draft'); function add_clone_link($actions, $post) { if (current_user_can('edit_posts')) { $type_label = ($post->post_type === 'page') ? 'Duplicate My Page' : 'Duplicate My Post'; $url = wp_nonce_url('admin.php?action=clone_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce'); $actions['clone'] = '<a href="' . esc_url($url) . '" title="Clone this item">' . $type_label . '</a>'; } return $actions; } add_filter('post_row_actions', 'add_clone_link', 10, 2); add_filter('page_row_actions', 'add_clone_link', 10, 2);
// 在管理區新增 “複製我的文章”或 “複製我的頁面”連結
function clone_post_as_draft() {
global $wpdb;
if (!isset($_GET['post']) || !isset($_GET['duplicate_nonce']) || !wp_verify_nonce($_GET['duplicate_nonce'], basename(__FILE__))) {
return;
}
$post_id = absint($_GET['post']);
$original = get_post($post_id);
if (!$original) {
wp_die('Original content not found.');
}
$current_user = wp_get_current_user();
$new_post = array(
'post_title' => $original->post_title,
'post_content' => $original->post_content,
'post_status' => 'draft',
'post_type' => $original->post_type,
'post_author' => $current_user->ID,
'post_excerpt' => $original->post_excerpt,
'post_parent' => $original->post_parent,
'menu_order' => $original->menu_order,
'comment_status'=> $original->comment_status,
'ping_status' => $original->ping_status,
);
$new_post_id = wp_insert_post($new_post);
// Copy taxonomies
$taxonomies = get_object_taxonomies($original->post_type);
foreach ($taxonomies as $taxonomy) {
$terms = wp_get_object_terms($post_id, $taxonomy, ['fields' => 'slugs']);
wp_set_object_terms($new_post_id, $terms, $taxonomy, false);
}
// Copy post meta
$meta = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id");
foreach ($meta as $meta_info) {
if ($meta_info->meta_key === '_wp_old_slug') continue;
add_post_meta($new_post_id, $meta_info->meta_key, maybe_unserialize($meta_info->meta_value));
}
wp_redirect(admin_url('post.php?action=edit&post=' . $new_post_id));
exit;
}
add_action('admin_action_clone_post_as_draft', 'clone_post_as_draft');
function add_clone_link($actions, $post) {
if (current_user_can('edit_posts')) {
$type_label = ($post->post_type === 'page') ? 'Duplicate My Page' : 'Duplicate My Post';
$url = wp_nonce_url('admin.php?action=clone_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce');
$actions['clone'] = '<a href="' . esc_url($url) . '" title="Clone this item">' . $type_label . '</a>';
}
return $actions;
}
add_filter('post_row_actions', 'add_clone_link', 10, 2);
add_filter('page_row_actions', 'add_clone_link', 10, 2);

複製文章和頁面程式碼片段

4. 儲存檔案並重新上傳

儲存後,將檔案拖放到 FileZilla 中。它會詢問你是否要覆蓋現有檔案,點選“確定”。

5. 驗證是否有效

  • 進入儀表板的“文章或頁面”部分。
  • 現在你應該可以在網站的每個頁面和文章下看到“Duplicate My Post”或“Duplicate My Page”選項。

複製我的文章選項

  • 點選它將立即根據原始內容建立一個新草稿。

選擇 2:使用內建主題檔案編輯器

如果您無法透過 FTP 或 SSH 訪問伺服器,不用擔心–WordPress 提供了直接透過儀表板進行編輯的方法。

只需前往外觀 主題檔案編輯器

在開始之前,你會發現 WordPress 顯示了一個警告。它基本上是讓你知道,直接編輯主題檔案並不總是最安全的方法。推薦的方法是使用子主題,這樣你的更改就不會在主題更新時被抹掉。

子主題

如果你不確定如何製作,這裡有一份簡單的指南,教你如何製作: 如何在 WordPress 中建立子主題

  • 進入管理儀表板中的 外觀 主題檔案編輯器。

主題檔案編輯器

  • 從右側面板找到並選擇 functions.php 檔案。

functions.php 檔案

  • 滾動到底部,貼上我們之前使用過的程式碼。
  • 單擊“Update File”儲存更改。

functions.php編輯

  • 返回到“文章”或“頁面”控制面板,就會在每個文章/頁面標題下看到 “Duplicate My Page”或“Duplicate My Post”選項(在行列表中)。

複製頁面選項

可選:手動複製內容,無需編輯程式碼

如果你不想碰 functions.php 檔案或使用第三方外掛,你可以從任何你想複製的頁面或文章中手動複製內容。具體方法如下:

  • 開啟要複製的頁面文章 。例如,我將開啟“關於”頁面

“關於”頁面

  • 點選右上角的三點選單,切換到程式碼編輯器

程式碼編輯器

  • 選擇所有程式碼並複製。

選擇所有程式碼並複製

  • 建立一個新的頁面或文章。
  • 再次開啟程式碼編輯器,貼上複製的程式碼。

貼上複製的程式碼

  • 切換回視覺化編輯器,繼續像往常一樣進行編輯。

視覺化編輯器

  • 如你所見,我們又建立了一個相同的頁面。

這種方法適用於偶爾的複製,但如果你想複製大量的文章或頁面,使用外掛或簡單的 functions.php 調整將為你節省大量時間。

小結

複製 WordPress 頁面或文章可以為你節省大量時間,尤其是當你要處理類似的佈局或測試更改時。

在本指南中,我們介紹了兩種直接複製 WordPress 頁面和文章的方法:使用外掛來簡化操作,或者手動新增程式碼來獲得更多控制權。

如果你需要一個快速的解決方案,像 Duplicate Page 這樣的外掛可以在幾秒鐘內完成工作。如果你更喜歡輕量級,只需對主題的 functions.php 檔案稍作調整,就能新增一鍵複製選項。

無論你選擇哪種方法,擁有複製內容的能力就意味著減少了重複性工作。

如果你有任何問題,請在下面的評論中告訴我,我會盡快回復你。

常見問題

Q. 我可以用程式碼複製 WordPress 頁面嗎?

A. 可以,如果你擅長編輯程式碼,可以在主題的 functions.php 檔案中新增程式碼段。這種方法可以在頁面和文章介面新增“克隆”選項。這是一種無需安裝外掛就能在儀表板中直接建立該功能的簡單方法。只需記住在修改程式碼前備份網站即可。

Q. 有沒有手動複製 WordPress 頁面或文章的方法?

A. 當然有。開啟現有頁面,轉到程式碼編輯器,然後複製所有內容。建立一個新的頁面或文章,再次切換到程式碼檢視,然後貼上內容。貼上完成後,您可以切換回視覺化編輯器。這種方法最適合一次性複製。

Q. 複製 WordPress 頁面最簡單的方法是什麼?

A. 最快捷的方法是安裝一個外掛。外掛啟用後,進入頁面列表,你會看到每個頁面下面都有一個“複製”選項。點選它,一個副本就會被建立為草稿,隨時可以編輯。

評論留言