Cómo duplicar páginas en Wordpress

Actualmente Wordpress es el CMS más utilizado para la creación de páginas web. Tal y como anuncian en su web, “el 28% de internet utiliza Wordpress”.

Esto se debe principalmente a su gran variedad de plugins, a su fácil instalación y a las funcionalidades que tiene.

Una de estas principales funcionalidades es la posibilidad de duplicar páginas y post, una tarea que sin duda adelanta mucho trabajo en el proceso de programación, acortando considerablemente los tiempos de trabajo.

Desde Roiting, nuestra agencia de marketing online, te contamos en este artículo todo sobre esta competencia.

Cómo añadir la función “duplicar” en Wordpress

Hoy por hoy,  Wordpress como tal no tiene la posibilidad de duplicar por sí mismo las páginas y los post. No obstante, su gran adaptabilidad te permite que puedas llevar a cabo esta tarea a través de un plugin o mediante código.

A continuación te detallamos cómo puedes hacerlo:

Duplicar páginas y posts mediante código

Para duplicar tanto las páginas de la web como el portfolio y los post tienes que pegar el siguiente código en el archivo functions.php:

/*
 * Function creates post duplicate as a draft and redirects then to the edit post 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!');
}
 
/*
* get the original post id
*/
$post_id = (isset($_GET['post']) ? $_GET['post'] : $_POST['post']);
/*
* and all the original post data then
*/
$post = get_post( $post_id );
 
/*
* if you don't want current user to be the new post author,
* then change next couple of lines to this: $new_post_author = $post->post_author;
*/
$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;
$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 href="admin.php?action=rd_duplicate_post_as_draft&amp;post=' . $post->ID . '" title="Duplicate this item" rel="permalink">Duplicar</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); /* for pages */
add_filter( 'portfolio_row_actions', 'rd_duplicate_post_link', 10, 2); /* a custom post called portfolio */

Una vez pegado el código, podrás observar en la administración de Wordpress, dentro de la sección de entradas o páginas, por ejemplo, la opción “duplicar” y en un solo clic se creará una copia exacta de todos los elementos de la página que deseabas duplicar, evitando que tengas que volver a hacerla de nuevo.

Duplicar páginas y posts mediante un plugin

Si prefieres no utilizar códigos y te manejas mejor con plugins, Wordpress también te da esta opción. Actualmente es posible realizar los duplicados a través de un plugin gratuito: Duplicate Post

Este plugin te da la oportunidad de clonar cualquier contenido que se encuentre en tu Wordpress de forma rápida y sencilla.  Por lo tanto, esta opción también te ayudará a aumentar tu productividad, evitando que tengas que volver a crear todos los elementos estructurales comunes en las diferentes páginas y post de tu web.

Recuerda que una cosa es duplicar los elementos estructurales y otra muy diferente el contenido de la página, puesto que, como bien sabrás, a Google no le gusta nada el contenido duplicado, por lo que podría afectar negativamente al posicionamiento SEO de la web, interfiriendo negativamente en futuras estrategias SEO.

Ahora que ya sabes un ‘truquito’ más sobre Wordpress ponte manos a la obra y optimiza tu tiempo. Y si aun así no te ves capaz de obtener los mejores resultados contacta con un equipo de profesionales. En Roiting, nuestros programadores web tienen una gran experiencia en gestores de contenidos, de entre los que destaca Wordpress, junto a Drupal, Prestashop y Magento.

¡No lo pienses más!

Roiting: Expertos en incrementar tu rentabilidad.

Tags: 
wordpress, posicionamiento seo, CMS, plugin

Deja un comentario

verifyserptrade

Sobre Nosotros

En Roiting contamos con un equipo de profesionales de diferente índole (analistas web, programadores, diseñadores, community managers, expertos en ppc y posicionamiento en buscadores) especializados en el entorno online y con un punto en común.