如何在 WordPress 中复制页面

重复内容不是您希望网站上经常出现的内容.但是,创建页面副本(即复制它们)以保持一致性是明智的做法.您唯一关心的应该是如何完成工作.

幸运的是,有几种方法可以在 WordPress 中复制页面,这对于如此灵活的平台来说是意料之中的.更重要的是,无论您的经验如何,都有适合的方法.

在这篇文章中,我们将看看在 WordPress 中复制页面的四种方法.但是,在此之前,让我们先深入了解一下您为什么要这样做.

在 WordPress 中复制页面和"复制内容"的区别

在我们进入具体的推理之前,有必要讨论在 WordPress 中复制页面与重复内容之间的区别.

后者与搜索引擎优化 (SEO) 有关.重复内容 表示您网站页面上的大部分或全部内容与网络其他地方的另一页面完全相同.虽然它可能是负面的,但它不是搜索引擎通常会立即惩罚你.

然而,这与"复制内容"不同,后者是对搜索引擎的"游戏"和更高排名的明确尝试.对此的处罚要严厉得多,因为这意味着这是一种蓄意行为.

与上述所有内容相反,复制页面仅意味着复制格式、结构、布局和内容.这个想法是使用这个重复的页面作为新页面的基础,如果因此使用,则不会受到 SEO 惩罚.让我们谈谈您接下来为什么要这样做.

为什么要在 WordPress 中复制页面

诚然,您可能会知道何时需要在 WordPress 中复制页面.但是,您当前创建帖子和页面的方法可能会受益于更有效的方法.例如:

所有这些情况都可以从复制页面的快捷方式中受益.因此,让我们解决我们在下一节中推荐的解决方案.

如何在 WordPress 中复制页面(4 种方法)

对于下面的四种方法,我们会根据您的经验从相对简单到中等难度.以下是我们将要介绍的内容:

  1. 如何手动复制和粘贴您的内容(以及为什么不应该这样做).
  2. 使用Block Editor 复制您的内容.
  3. 安装插件以复制页面.
  4. 添加代码到您的functions.php文件以复制页面.

完成后,我们将为您提供一些建议,让您选择在 WordPress 中复制页面的最佳方式.

1.手动复制和粘贴您的内容(以及为什么它不理想)

首先,让我们讨论许多人会采用的传统方法.在 WordPress 中复制页面的"蛮力"策略是简单地复制内容并将其粘贴到新草稿中.

如果您在阅读本文时对页面耸耸肩,我们打赌您属于以下阵营之一:

  • 您的网站页面很少,并且很少使用 SEO 或 分类字段.
  • 无法通过网站后端访问您要复制的页面.
  • 您还没有发现更快的方法.

如果您同意前两点中的任何一点,那么复制和粘贴可以说是继续进行的最佳方式.

然而,虽然手动复制和粘贴易于理解和执行,但也存在一些缺点.这种方法不会正确复制图像、类别和标签、元描述、永久链接,或任何以下-您网站的核心元素,例如自定义 HTML.

步骤 1.从原始文章中复制文本

CTRL-A 是你的好帮手,步骤也不复杂:

  1. 访问相关网站.
  2. 突出显示并复制文本.
  3. 将其粘贴到您的新草稿中.

即使对于最"技术盲"的人来说,这也应该很简单.然而,下一步稍微有点棘手.

第 2 步:从 HTML 中删除标签

请注意,根据您的源草稿和目标草稿,您可能需要重新应用标题格式并从后端删除多余的 HTML.为此,请在复制内容后访问页面的代码编辑器.经典编辑器用户应该点击 Text 标签...

...和块编辑器用户会想要前往代码编辑器:

从这里开始,删除您找到的任何 &nbsp;<span> 标签是明智的.我们的建议是查看一个非重复的页面并遵循代码的结构和布局.

考虑到工作,它可能会成为一两页以上的时间槽,并且每次手动复制都有可能引入错误和错误.

相反,如果您想有效地在 WordPress 中复制页面而不会出现错误和浪费时间,最好考虑此列表中的另一个选项.

2.考虑使用块编辑器的功能来帮助您复制页面

使用块编辑器在 WordPress 中复制页面更像是一种"半手动"方法,因为大多数缺点仍然有效.

但是,如果您想复制自己的 WordPress 网站中的某个页面,请打开该页面,然后查看 更多工具 &屏幕右上角的选项菜单:

打开此菜单后,移至工具部分,然后单击复制所有内容.从这里,您可以将内容粘贴到新草稿中并开始处理.但是,它仍然不是在 WordPress 中复制页面的最有效方法.

3.使用 WordPress 插件复制您的页面

实际上 WordPress 中的所有内容都可以使用插件来实现,复制页面也不例外.

您在这里的首要任务是选择合适的东西.您需要查看过去 6 个月内更新过的插件、与您的 WordPress 版本配合使用并获得良好评级和评论(至少四星).

这里有一些建议.Yoast 重复帖子重复页面或 Post 都受到好评并一直得到维护.但是,让我们举个例子,使用 Duplicate Page 插件,可以说是最好的解决方案:

一旦 已安装并激活,前往您的页面 > 所有页面 WordPress 中的屏幕.从这里,将鼠标悬停在您要复制的页面上,然后查找 Duplicate This 链接:

单击此按钮将克隆相关页面-工作完成!

4.将代码添加到您的 functions.php 文件以在 WordPress 中复制您的页面

我们的最终方法可以说是最难实施的,但提供了最大的灵活性和实施.将代码添加到您的 functions.php 文件非常适合许多任务,尤其是在 WordPress 中复制页面.

您可以将链接直接添加到您的页面仪表板屏幕,这意味着它会在您需要时始终存在.但是,在开始之前,您需要准备一些东西:

  • 一个合适的文本编辑器.Atom, Sublime TextNotepad++全部免费(或附带试用版),即使是默认的文本编辑器也可以在紧要关头.
  • 文件传输协议 (FTP) 客户端.FileZillaCyber​​Duck很棒的选择,将为您提供一种访问网站的好方法.您的托管服务提供商也可能提供文件管理器,它的作用相同.
  • 访问您网站的服务器.通常可以在您的托管控制面板中找到此凭据,或通过您首次购买帐户时发送给您的电子邮件.
  • 通过 FTP 管理您的网站的技能.如果这是你需要复习的东西,Make WordPress 网站有一个 很棒的 FileZilla 教程,可适用于其他客户端.
  • 子主题基于您当前的父主题.这有助于在进行更新时保留您的更改,我们已经讨论了如何操作这在过去.

准备好后,打开您的 FTP 客户端,然后继续操作!

第一步:打开你的functions.php文件

首先,通过您的 FTP 客户端登录您的站点,然后查找 wp-content > themes 文件夹:

在里面,应该是您的子主题文件夹,其中包含一个 functions.php 文件.它可能不存在,在这种情况下,您需要先创建它.接下来是编辑它.

第 2 步.将代码添加到您的 functions.php 文件

打开functions.php文件后,您需要添加以下代码.它应该追踪可能存在于其中的所有其他代码:

/* Duplicate posts and pages function.Duplicates appear as drafts, and the 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;

/* This gets the original post or page ID */
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );

/* …then grabs the original post data.*/
$post = get_post( $post_id );
     
/* To select another user as the post author, use $new_post_author = $post->post_author;.Otherwise… */
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
     
/* If the post data exists, create the duplicate */
if (isset( $post ) && $post != null) {
   /* Create a 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 using wp_insert_post() */
        $new_post_id = wp_insert_post( $args );
     
       /* Get all current post terms, then set them against the new 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 of the post metadata */
        $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);
        }
     
       /* 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 the 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,%20basename(__FILE__),%20'duplicate_nonce'%20).'" 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);

添加代码后,保存更改并退出 FTP 连接.

第 3 步.检查您是否可以复制页面

最后,刷新您的后端并前往页面屏幕.你会看到重复链接像以前一样出现:

有了正确的知识,您可以轻松地将其转换为插件并进一步扩展功能,尽管它在您的子主题的 functions.php 文件中运行良好.

如何选择正确的方法在 WordPress 中复制您的页面

在复制页面时,倾向于选择最快的解决方案是有道理的.但是,我们认为您可能需要根据自己的需要考虑更复杂的选项.

对于大多数只需要在 WordPress 中复制页面的用户来说,插件将是您最好的选择.您可以在必要时安装并激活它,它会为您提供所需的功能(在某些情况下还会提供更多功能).

但是,如果您是一个沉重的"复制者",可能有复杂的需求,那么在 WordPress 中硬编码一个解决方案来复制您的页面是非常有意义的.它会一直在那里,并会根据您的需求提供定制体验.

当然,在某些情况下也有预算问题,具体取决于这些需求,但如果您获得了想要的功能,那么花钱是值得的.

总结

从表面上看,在 WordPress 中复制页面之类的任务应该是一个简单的按钮按下.根据您的经验和知识,有些方法可能看起来要复杂得多.

在这篇文章中,我们研究了在 WordPress 中复制页面的四种方法,难度各不相同.让我们快速回顾一下:

  1. 手动复制和粘贴您的内容,但如果您有很多页面,请准备好将时间投入到任务中.
  2. 或者,使用内置的块编辑器功能-尽管更多可靠的解决方案更好.
  3. 采用经典方法并使用插件来复制您的页面,例如 重复页面.
  4. 打开一个文本编辑器并将代码添加到您的 WordPress 功能.php 文件.

您是否正在寻找一种在 WordPress 中复制页面的方法,如果是,这些选项中的哪一个对您有吸引力?在下面的评论部分告诉我们!

6

发表回复