Às vezes você se deparará com uma situação quando quiser criar uma nova mensagem ou página idêntica (ou quase idêntica) a uma mensagem ou página existente no seu site.

Se o post ou página é longa ou inclui um monte de mídia, o processo de adicionar todo esse conteúdo novamente pode parecer muito trabalhoso. Além disso, se você tiver muitas mensagens que serão muito semelhantes entre si, será muito frustrante ter que digitar manualmente todo o seu texto novamente ou adicionar todos os arquivos de mídia para criar suas novas mensagens ou páginas.

Uma opção pode ser abrir a mensagem existente (por conveniência, vamos usar “mensagem” para fazer referência a mensagens e páginas aqui) em uma janela ou guia do navegador, depois criar sua nova mensagem em outra janela e alternar entre as duas, copiando e colando seu conteúdo. Afinal de contas, as versões recentes (pós-Gutenberg) do WordPress tornam isto bastante fácil, com a opção “Copiar todo o conteúdo” disponível para si.

Mas se tiveres de fazer isto vezes sem conta, há o risco de cometer erros. E se você acidentalmente editar a postagem original, substituindo o conteúdo que você já publicou no seu site? Ou se você tiver um grande número de mensagens para copiar e perder o controle de quais delas você criou?

Pode ser uma potencial dor de cabeça.

Felizmente, há uma maneira mais fácil. Existem plugins gratuitos disponíveis que lhe permitirão fazer duplicatas das suas mensagens e páginas, para que possa editá-las e ajustá-las para criar novas mensagens que são quase idênticas ao seu conteúdo existente.


Neste post, vamos mostrar alguns dos métodos que você pode usar para fazer isso, e destacar alguns dos melhores plugins para a tarefa.

Mas primeiro, vamos mostrar-lhe como duplicar uma página ou postar no WordPress de forma semi-manual, sem um plugin. Isso envolve copiar e colar, mas o WordPress torna tão fácil fazer isso, se você só tem um post para copiar, provavelmente vai ser mais rápido do que instalar um plugin e fazê-lo dessa forma.

Como duplicar uma página ou postagem no WordPress, o modo semi-manual

Este método pode ser mais rápido se você tiver apenas um post para duplicar, pois economiza tempo instalando um plugin. Se você tem um monte de mensagens para duplicar, eu recomendo seriamente ignorar esta seção, no entanto: você vai achar muito mais rápido, para não mencionar mais preciso, para usar um plugin.

Então, para aqueles de vocês que só precisam duplicar um post ou página, aqui está como fazê-lo.

Comece por abrir a sua mensagem ou página existente. Certifique-se de que não tem um bloco individual seleccionado clicando fora de um bloco da sua mensagem ou seleccionando o separador Documento no painel de edição à direita do ecrã. Se você tiver um bloco selecionado, o WordPress copiará apenas o conteúdo desse bloco e não o documento inteiro.

Agora clique na elipse no canto superior direito da tela de edição (três pontos dispostos em cima um do outro).

A opção copiar todo o conteúdo no WordPress
A opção copiar todo o conteúdo no WordPress

Aparecerá um menu. Na parte inferior deste menu, você verá uma opção Copiar todo o conteúdo. Clique nele e você receberá uma mensagem informando que seu conteúdo foi copiado.

Agora crie o seu novo post. Dê um título à sua mensagem e depois clique no primeiro bloco vazio que foi criado para si no ecrã de edição. Use as teclas de atalho para colar no teclado (Ctrl + V em um PC, Cmd + V em um Mac ou clique com o botão direito do mouse e selecione Colar no menu de atalhos que aparece.

O conteúdo do seu post mais antigo aparecerá agora no seu novo post. Magia! (OK, talvez não.)

Agora você pode editar esse post e torná-lo diferente do post mais antigo. Isso é algo que eu recomendo fortemente que se faça – não faz muito sentido ter posts em blogs que são duplicados exatamente um do outro no seu site. Não só vai confundir os visitantes, mas também é mau para SEO.

Mas e se você quiser criar várias duplicatas do seu post? Continua a ler…

Como duplicar uma página ou postar no WordPress usando um plugin

De longe, a maneira mais rápida, fácil e confiável de duplicar mensagens é usando um plugin. Isto poupar-lhe-á tempo, evitará qualquer erro humano e permitir-lhe-á copiar qualquer tipo de mensagem que desejar. Na verdade, em nossa experiência duplicar postagens é realmente mais comum com tipos de postagens personalizadas. É incomum ter dois posts em blogs que são quase idênticos entre si, mas é bastante comum para produtos em uma loja, por exemplo.

Então aqui estão alguns plugins que irão facilitar o processo de duplicação de posts, e orientação sobre como usá-los.

WooCommerce

Você pode estar se perguntando por que eu incluí WooCommerce aqui, como é um plugin de comércio eletrônico, não um plugin de duplicação de postagem.

Mas vale a pena saber que o WooCommerce permite duplicar produtos sem instalar um plugin extra. Então, antes de começar a procurar por um plugin de duplicação de postagem e usar isso para duplicar seus produtos, basta usar os recursos que vêm junto com WooCommerce.

Se você for para a tela principal de Produtos no WooCommerce e passar o mouse sobre qualquer produto, você verá um link duplicado sob esse post.

A opção de produto duplicado WooCommerce
A opção de produto duplicado WooCommerce

Basta clicar no link Duplicar e um novo produto será criado. Serás levado directamente para o ecrã de edição do novo produto para que possas fazer alterações e depois publicá-lo.

Vale a pena notar que a bala para o novo produto será a bala para o produto antigo com -copia adicionada, por isso, mesmo que mude o título do novo produto, também terá de editar a bala.

Edição de um produto duplicado
Edição de um produto duplicado

Plugin Duplicado do Poste

Duplicate Post é o plugin mais popular para duplicar posts, com mais de 3 milhões de downloads.

Depois de ativado, ele adiciona um link Clone a cada publicação na tela principal de Posts do WordPress admin.

O plugin Duplicate Post
O plugin Duplicate Post

Clique no link Clonar sob a postagem que você deseja duplicar, e uma nova postagem será criada para você com o mesmo conteúdo e título e um status de Rascunho.

Você pode então editar esse novo post e dar-lhe um novo título (algo que eu aconselharia fortemente – o WordPress permite que você duplique títulos, mas não é muito bom para a experiência do usuário).

Ele também adiciona o mesmo link Clone para páginas e para tipos de mensagens personalizadas (se você ativá-los nas configurações).

Página Duplicada

O plugin Duplicate Page teve mais de 900.000 downloads e é uma alternativa ao plugin Duplicate Post acima.

Depois de ter instalado o plugin, vá até a tela de administração de Posts ou Páginas, ou até a tela de administração para seu tipo de postagem personalizada, e você encontrará um link Duplicar este link sob cada postagem. Aqui está o meu com um tipo de correio personalizado:

O plugin Página Duplicada
O plugin Página Duplicada

Clique no link e você receberá uma nova mensagem (ou página, ou mensagem do seu tipo de mensagem personalizada) com o mesmo conteúdo e título da mensagem original, com um status de Rascunho. Você precisará editá-lo e corrigir sua bala antes de publicá-lo.

Nota: Se você estiver usando o WooCommerce, o link Duplicar Este link deste plugin não será exibido na tela de Produtos. WooCommerce sobrescreve-lo com seu próprio link duplicado que eu descrevi anteriormente neste post.

Como Duplicar Posts ou Páginas em Massa

Os plugins que já mencionei permitirão que você duplique os posts um de cada vez. Mas e se você precisar duplicar todas as mensagens em seu site, ou todas as mensagens de um tipo de mensagem personalizada? Ou talvez todos os posts que publicou este ano?

O plugin do WP Bulk Post Duplicator permite que você faça exatamente isso. Em vez de adicionar um link para duplicar mensagens individuais, ele lhe dá uma tela de configurações que permite duplicar mensagens em massa de acordo com os critérios que você definir.

Nota: Este plugin não foi atualizado por dois anos no momento de escrever, então aconselhamos instalá-lo em um site de desenvolvimento e testá-lo antes de usá-lo em um site ao vivo. Usamo-lo no nosso local de testes sem problemas.

Depois de ter instalado o plugin, vá a Settings > WP Bulk Post Duplicator para ver a tela de configurações do plugin.

Comece por selecionar os tipos de mensagens que pretende duplicar, bem como os status das mensagens. Então, se você selecionar postagem e publicada, o plugin irá duplicar todas as suas postagens publicadas. Se, em vez disso, você selecionar postagens e rascunho, ele irá apenas duplicar todas as suas postagens de rascunho.

Configurações de Duplicatas em Massa - tipo e status da postagem
Configurações de Duplicatas em Massa – tipo e status da postagem

Role para baixo e selecione o ano das mensagens que deseja duplicar (isso é opcional). Também é possível especificar o status dos novos lançamentos criados. Se você não selecionar nada aqui, o padrão será Rascunho.

Configurações de duplicatas em massa - ano e status de publicação
Configurações de duplicatas em massa – ano e status de publicação

Clique no botão Duplicar e o plugin irá duplicar as suas mensagens. Aqui você pode ver todas as minhas páginas duplicadas, com 12 páginas já publicadas e 12 novas rascunhos de páginas. Então eu preciso trabalhar em todas as páginas e editá-las antes de publicá-las. Isso vai levar tempo, mas foi mais rápido devido à duplicação em massa,

Escreva o seu próprio Plugin de Duplicação Postal

E se você não quiser usar um plugin de terceiros para duplicar posts e você prefere codificar o seu próprio?

Não há problema. Basta seguir estes passos para criar o seu próprio plugin de duplicação de posts.

1. Configurando o Plugin

Comece por configurar o plugin. Adicione um novo ficheiro à sua pasta wp-content/plugins e adicione este texto comentado (pode editar o seu para reflectir o nome do seu autor):

<?php
/*
Plugin Name: Kinsta Duplicate posts and pages
Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages.
Version: 1.0
Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

2. Criação da função

Agora adicione a função para duplicar mensagens e conecte-a a um gancho de ação. Este gancho de ação ainda não existe: não se preocupe, vamos criá-lo em breve.

function kinsta_duplicate_post(){
}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

Agora vamos criar essa ação, que virá como parte de uma função para adicionar o link de duplicação aos posts e telas das páginas.

function kinsta_duplicate_post_link( $actions, $post ) {
 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }
 return $actions;
}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Isso irá adicionar o link para duplicar, mas ele não vai realmente duplicar nada ainda.

3. Adicionando Funcionalidade de Duplicação

Vamos adicionar o código para a duplicação. Todo o resto do código vai dentro da sua função kinsta_duplicate_post() vazia.

Primeiro, vamos verificar se um post válido foi selecionado e verificar se há um nonce, por segurança:

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {
 wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
 return;
}

Agora precisamos buscar o ID do post para ser duplicado, junto com seus dados:

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

Podemos usar isso para definir um array de argumentos e inserir um novo post no banco de dados, usando wp_insert_post(), Mas primeiro, adicione uma instrução condicional para verificar se o post não é nulo:

if ( isset( $post ) && $post != null ) {

}

Adiciona isto dentro dessa instrução condicional:

// args for new post
$args = array(
 'comment_status' => $post->comment_status,
 'ping_status'    => $post->ping_status,
 'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

Agora vamos buscar as taxonomias ao antigo posto e adicioná-las ao novo:

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );
}

E, em seguida, vamos adicionar quaisquer metadados post extras, usando uma consulta SQL:

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if ( count( $post_metas )!=0 ) {
 
$sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";
 
foreach ( $post_metas as $post_meta ) {
  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 );

}

Finalmente, verificamos que tipo de mensagem o post é e redirecionamos para a tela relevante.

// redirect to admin screen depending on post type
$posttype = get_post_type( $post_id );
wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

Agora, fora das chaves para a verificação if ( isset( $post ) && $post != null ), adicionamos uma mensagem de erro:

else {
 // display an error message if the post id of the post to be duplicated can't be found
 wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
}

E é tudo!

O Plugin Completo

Aqui está o código completo para o plugin:

<?php

/* Plugin Name: Kinsta Duplicate posts and pages

Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages. Version: 1.0 Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

/********************************************************************
kinsta_duplicate_post() - duplicates the selected post
*********************************************************************/

function kinsta_duplicate_post(){

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {

wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
return;
}

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

// duplicate the post
if ( isset( $post ) && $post != null ) {

// args for new post
$args = array(
'comment_status' => $post->comment_status,
'ping_status'    => $post->ping_status,
'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );

}

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");

if ( count( $post_metas )!=0 ) {
 
 $sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";

 foreach ( $post_metas as $post_meta ) {

  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 admin screen depending on post type
 $posttype = get_post_type( $post_id );
 wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

 } else {

  // display an error message if the post id of the post to be duplicated can't be found
  wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
 }

}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

// Add the duplicate link to action list for post_row_actions
function kinsta_duplicate_post_link( $actions, $post ) {

 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }

 return $actions;

}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Você também pode encontrar o plugin completo no Github.

Parabéns! Agora você tem seu próprio plugin para duplicar posts e páginas em seu site WordPress.

Crédito: Este código foi parcialmente escrito com referência a um post no blog da Hostinger.

Resumo

Usar um plugin para duplicar posts e páginas pode ser mais rápido do que fazê-lo manualmente e pode remover o risco de erros ao copiar conteúdo.

Se você tiver apenas uma mensagem para copiar, você pode achar mais rápido usar o recurso “Copiar todo o conteúdo” embutido no WordPress, mas para mais de uma mensagem, vale a pena usar um plugin. Se você usar um dos plugins listados acima, ou talvez codificar o seu próprio, você será capaz de duplicar quantas mensagens, páginas ou tipos de mensagens personalizadas quantas vezes quiser.

Se o fizer desta forma, poupará tempo e (mais importante), eliminará o risco de editar acidentalmente a sua mensagem original quando deveria ter editado a mensagem duplicada.