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

已發表: 2021-08-26

正在尋找複製 WordPress 頁面、帖子或其他類型內容的方法?

能夠輕鬆複製 WordPress 內容在所有類型的情況下都很有用,從批量創建類似內容到更新舊內容再到調整設計等等。

但是,在許多情況下,這不僅僅是在不同頁面之間複製和粘貼文本。 除了您創建的內容之外,您可能還想保留其設計和帖子的設置,例如其類別、標籤、作者、自定義字段和其他元數據。

在本文中,我們將為您提供全面的指南,介紹如何使用 100% 免費解決方案完全複製 WordPress 頁面、帖子等。

到最後,您將能夠通過單擊按鈕複製您網站上的任何內容——讓我們開始吧。

目錄

  • 如何在 WordPress 中復制帖子或頁面:三種方法
  • 如何使用插件複製 WordPress 頁面
  • Yoast 重複發布
  • 重複發布
  • WooCommerce
  • 如何使用編輯器複製 WordPress 頁面
  • 塊編輯器(古騰堡)
  • 元素者
  • 如何使用代碼手動複製 WordPress 頁面
使用完整的網站工具包進一步加速您的網站創建過程

如何在 WordPress 中復制帖子或頁面:三種方法

您可以使用三種主要方法來複製 WordPress 頁面、帖子或其他自定義帖子類型:

  • 插件——複製帖子或頁面的最簡單方法是使用眾多專用插件之一(其中大部分是免費的)。
  • 編輯器– 根據您想要復制內容的徹底程度,如果您只關心複製內容和設計,則可以只使用編輯器。
  • 手動代碼——對於自己動手的人,您可以將一些自定義代碼添加到子主題的 functions.php 文件中。

我們將涵蓋所有三種方法——讓我們逐一了解它們……

如何使用插件複製 WordPress 頁面

有很多插件可以輕鬆複製您網站上的帖子、頁面或其他內容。

如果您有 WooCommerce 商店,WooCommerce 包含其自己的內置功能來複製產品——更多內容見下文。 如果您不這樣做,您會在 WordPress.org 上找到許多免費插件,包括以下內容:

  • Yoast 重複發布
  • 重複發布
  • 重複頁面
  • 後復印機
  • 重複頁面和帖子

除了 WooCommerce,我們還將向您展示它如何與上面列表中的兩個免費插件一起使用:

  • Yoast Duplicate Post因為它非常易於使用並且包含獨特的“重寫和重新發布”功能,非常適合更新現有內容。
  • 重複發布,因為它可以讓您在某些區域進行更精細的控制。

這兩個插件都是免費的,我們還對它們進行了測試,以確保它們適用於 Elementor 設計和使用本機 WordPress 編輯器構建的內容。 我們想像上面的所有其他插件也可以與 Elementor 一起使用,儘管我們沒有專門測試它們。

Yoast 重複發布

首先,讓我們看一下 Yoast Duplicate Post。 如果您只是想要一種快速簡便的方法來複製帖子、頁面或任何其他自定義帖子類型,那麼此插件非常有用。

除了讓您克隆內容外,它還包括一個獨特的重寫和重新發布功能,可幫助您更新現有內容。 從本質上講,此功能允許您複製內容以進行更改,然後在您想要使更改生效時將復制的版本“合併”回原始版本。

要開始使用,請從 WordPress.org 安裝並激活免費的 Yoast Duplicate Post 插件。

現在,您有幾種不同的方法來複製內容。

首先,您可以轉到主帖子頁面列表。 如果將鼠標懸停在列表中的某個項目上,您將看到三個選項:

  • 克隆——複製內容並將瀏覽器選項卡保留在帖子/頁面列表中。
  • 新建草稿——複製內容並打開復制內容的編輯器,以便您可以立即開始工作。
  • 重寫和重新發布——正如我們上面所討論的,這是更新舊內容的有用功能。 關鍵區別在於它可以讓您在完成後將內容合併回原始帖子。
頁面列表中的重複頁面 1 選項

最簡單的方法是單擊Clone 。 然後,您會在列表中看到重複內容的新草稿條目。 該插件將用“自定義草稿”通知標記它,讓您知道它是重複版本:

其次,您還可以從 WordPress 編輯器中復制內容。 您將在帖子/頁面側邊欄的狀態和可見性部分找到這些選項:

最後,您還可以通過使用帖子頁面列表的批量操作下拉列表中的插件選項來批量複製帖子或頁面:

  1. 使用複選框選擇您要復制的所有帖子或頁面。
  2. 從下拉列表中選擇複製方法 -克隆重寫並重新發布
  3. 單擊應用

如果您想自定義插件的行為,您可以轉到設置 → 複製帖子。 該區域讓您:

  • 選擇要復制的內容。
  • 為重複內容的標題添加自定義前綴或後綴。
  • 選擇如何訂購菜單中的重複內容。
  • 選擇哪些帖子類型符合複製條件。
  • 選擇哪些用戶角色可以復制內容。
  • 自定義顯示重複帖子鏈接/按鈕的位置。
duplicate-page-5-yoast-duplicate-post-settings-area

重複發布

Duplicate Post 與 Yoast Duplicate Post 具有相同的基本功能,因為它可以輕鬆快速地複制帖子或頁面。

這個插件相對於 Yoast Duplicate Post 的幾個優點是:

  1. 允許您通過單擊多次復制帖子/頁面。 例如,您可以告訴它創建四個副本。
  2. 讓您更好地控制帖子之間複製的內容。
  3. 包括掃描站點以查找重複內容的功能,這對於快速查找重複內容很有用。
  4. 允許您在不同的 WordPress 多站點網絡站點之間複製內容,包括子域上的站點(儘管此功能需要 19.98 美元的高級插件)。
  5. 為您提供將帖子轉換為頁面的選項,反之亦然(也需要高級版本)。

如果您不需要這些功能,我們建議您堅持使用 Yoast Duplicate Post,因為它更受歡迎並且可以完成工作。 但如果您確實想要這些功能,這是另一個值得考慮的可靠選擇。

首先,安裝並激活來自 WordPress.org 的免費 Duplicate Post 插件。 一旦你激活它,它就會開始工作。

轉到帖子/頁面列表並將鼠標懸停在要復制的內容上。 您會看到Copy的新選項。 如果將鼠標懸停在上面,您將展開一些額外的設置以選擇要復制的數量和要使用的設置(稍後會詳細介紹):

duplicate-page-6-duplicate-post-plugin 插件

與 Yoast Duplicate Post 一樣,您還可以使用複選框和批量操作下拉列表來批量複製多個帖子。

要配置插件的設置,您可以轉到 WordPress 儀表板中新的“複製和刪除帖子”選項卡。 您可以在此處配置所有設置,包括:

  • 要復制什麼內容。
  • 誰可以復制內容。
  • 為哪些自定義帖子類型啟用複制。
  • 等等。

一件好事是您可以創建多個設置配置文件,並在復制內容時選擇要使用的配置。

如果滾動到設置區域的底部,您還可以找到掃描網站上重複內容的功能:

同樣,如果您只想要一種簡單的方法來複製內容,我們建議您堅持使用 Yoast Duplicate Post 插件。 但是,如果這些功能中的任何一個引起了您的注意,Duplicate Post 也能很好地發揮作用。

WooCommerce

如果您使用 WooCommerce 創建電子商務商店,WooCommerce 包含其自己的內置功能來複製產品——無需安裝單獨的插件。

要復制產品,請轉到儀表板中的“產品”區域。 然後,將鼠標懸停在您要復制的產品上並單擊Duplicate

您還可以通過單擊發佈設置下的複製到新草稿選項從產品編輯器內部複製產品:

注意——這些選項只出現在產品上。 如果你想複製帖子和頁面,你需要從上面安裝一個插件。

如何使用編輯器複製 WordPress 頁面

如果您主要關心複製帖子或頁面的內容/設計,由於一些內置的編輯器功能,沒有插件可能沒問題。

在本節中,我們將向您展示如何快速復制您使用本機塊編輯器 (Gutenberg) 或 Elementor 創建的設計。

請務必注意,這兩種方法只會復制內容和設計——您需要手動重新創建任何重要的元數據,例如標題、類別、標籤、自定義字段等。

塊編輯器(古騰堡)

要快速復制塊編輯器中的內容,首先打開要復制的帖子或頁面的編輯器。

單擊右上角的三點圖標以展開菜單。 然後,選擇複製所有內容的選項:

重複頁面 11 重複內容古騰堡

現在,創建一個新的帖子或頁面。 然後,單擊進入編輯器並粘貼內容。 您可以:

  • 使用鍵盤快捷鍵,如Ctrl + VCmd + V
  • 右鍵單擊並選擇粘貼。

您應該在編輯器中看到原始內容的精確副本。 但是,您需要確保手動添加標題、類別、標籤等。

元素者

注意– 您可以使用我們上面提到的插件複製使用 Elementor 構建的頁面或帖子。 但是,如果您主要關心複製 Elementor 帖子/頁面的設計(而不是其他元數據,如作者和類別),則可以使用 Elementor 的模板系統來實現。

我們有一個關於如何復制 Elementor 頁面的指南,但這是基本的想法。

首先,您可以從 Elementor 編輯器界面將您的設計保存為模板:

重複頁面 12 元素模板

然後,您可以創建新的帖子或頁面,並從 Elementor 模板庫中插入模板。

如果您不僅要復制單個頁面,還可以使用 Elementor 的網站工具包功能來導出/導入完整的網站設計。

通過導入您自己的網站工具包複製您的完整網站設計

Elementor 導入/導出功能允許您導入自己的作品並在幾秒鐘內創建一個新網站。 只需創建一個可用於多個項目的藍圖,或重複使用您最喜歡的 Web 創作。 然後,導出整個網站並將其應用於您的其他項目。

您可以使用自己的創作或從我們的設計師製作的網站工具包庫中進行選擇。 只需將其應用到您的網站,添加內容,並使其成為您自己的網站。

如何使用代碼手動複製 WordPress 頁面

如果您更喜歡自己動手 (DIY) 的方法,您還可以使用一些自定義代碼創建自己的複制頁面功能。 除了消除在您的站點上安裝另一個插件的需要之外,此方法不會增加插件路由的任何好處。

但是,如果避免使用其他插件對您很重要,則此方法很好,並且適用於常規編輯器內容和 Elementor。

要使用此代碼,您需要將其添加到主題的functions.php文件或代碼管理插件(如 Code Snippets)中。 如果將它添加到functions.php文件,請確保使用子主題。

 $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>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 ); <code readonly="true">$current_user = wp_get_current_user(); $new_post_author = $current_user-&gt;ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) &amp;&amp; $post != null) { /* * new post data array */ $args = array( &#39;comment_status&#39; =&gt; $post-&gt;comment_status, &#39;ping_status&#39; =&gt; $post-&gt;ping_status, &#39;post_author&#39; =&gt; $new_post_author, &#39;post_content&#39; =&gt; $post-&gt;post_content, &#39;post_excerpt&#39; =&gt; $post-&gt;post_excerpt, &#39;post_name&#39; =&gt; $post-&gt;post_name, &#39;post_parent&#39; =&gt; $post-&gt;post_parent, &#39;post_password&#39; =&gt; $post-&gt;post_password, &#39;post_status&#39; =&gt; &#39;draft&#39;, &#39;post_title&#39; =&gt; $post-&gt;post_title, &#39;post_type&#39; =&gt; $post-&gt;post_type, &#39;to_ping&#39; =&gt; $post-&gt;to_ping, &#39;menu_order&#39; =&gt; $post-&gt;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-&gt;post_type); // returns array of taxonomy names for post type, ex array(&quot;category&quot;, &quot;post_tag&quot;); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array(&#39;fields&#39; =&gt; &#39;slugs&#39;)); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb-&gt;get_results(&quot;SELECT meta_key, meta_value FROM $wpdb-&gt;postmeta WHERE post_id=$post_id&quot;); if (count($post_meta_infos)!=0) { $sql_query = &quot;INSERT INTO $wpdb-&gt;postmeta (post_id, meta_key, meta_value) &quot;; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info-&gt;meta_key; if( $meta_key == &#39;_wp_old_slug&#39; ) continue; $meta_value = addslashes($meta_info-&gt;meta_value); $sql_query_sel[]= &quot;SELECT $new_post_id, &#39;$meta_key&#39;, &#39;$meta_value&#39;&quot;; } $sql_query.= implode(&quot; UNION ALL &quot;, $sql_query_sel); $wpdb-&gt;query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( &#39;post.php?action=edit&amp;post=&#39; . $new_post_id ) ); exit; } else { wp_die(&#39;Post creation failed, could not find original post: &#39; . $post_id); } } add_action( &#39;admin_action_rd_duplicate_post_as_draft&#39;, &#39;rd_duplicate_post_as_draft&#39; ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can(&#39;edit_posts&#39;)) { $actions[&#39;duplicate&#39;] = &#39;&lt;a&gt;ID, basename(__FILE__), &#39;duplicate_nonce&#39; ) . &#39;&quot; title=&quot;Duplicate this item&quot; rel=&quot;permalink&quot;&gt;Duplicate&lt;/a&gt;&#39;; } return $actions; } add_filter( &#39;post_row_actions&#39;, &#39;rd_duplicate_post_link&#39;, 10, 2 );</code> $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>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 );
			

默認情況下,該代碼段會為帖子和頁面啟用複制。 如果您只想為一個或另一個啟用它,您可以刪除代碼片段底部的page_row_actionspost_row_actions過濾器。

通過複製頁面和帖子改進您的 Web 創建過程

當您在 WordPress 網站上工作時,能夠複製 WordPress 頁面、帖子或其他帖子類型非常方便。

在這篇文章中,我們分享了三種可用於復制內容的不同方法。

對於大多數人來說,完全克隆帖子或頁面的最簡單方法是使用免費的 Yoast Duplicate Post 插件。 它立即開始工作,並可與塊編輯器 (Gutenberg)、Elementor 和 Classic TinyMCE 編輯器一起使用。 它還適用於所有帖子類型,從頁面到帖子以及您可能使用的任何自定義帖子類型。

如果您有 WooCommerce 商店,您還可以使用 WooCommerce 的內置功能來複製產品。 或者,如果您不想安裝其他插件,可以向您的站點添加一些自定義代碼。

最後,如果您只需要復制帖子的內容/設計,您可以使用 Elementor 的模板系統或使用塊編輯器的選項來複製所有內容。

在我們走之前,一個快速提醒。 在大多數情況下,您不想發布重複的內容,因為它會對您的 SEO 產生負面影響。 因此,如果您在不更改內容的情況下複製頁面(可能只是更改 URL),您需要考慮在完成後重定向原始頁面。

您對如何復制 WordPress 頁面或帖子仍有疑問嗎? 請在評價部分留下您的意見。

立即獲取託管的 WP 網站
學到更多
獲得託管
可濕性粉劑網站
即刻
學到更多
加入我們的全球網絡創作者社區
現在加入
在我們的中心感受社區精神
現在加入
與其他網絡創作者聯繫
查找聚會