如何复制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. 最快捷的方法是安装一个插件。插件激活后,进入页面列表,你会看到每个页面下面都有一个“复制”选项。点击它,一个副本就会被创建为草稿,随时可以编辑。

评论留言