Cómo duplicar páginas en WordPress

noviembre 3, 2017 como-duplicar-paginas-en-wordpress-roiting.jpg

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído, entiendo y acepto las condiciones aquí expuestas y el siguiente Aviso Legal.

A los efectos previstos en el Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo de 27 de abril de 2016 relativo a la protección de las personas físicas (RGPD), y la Ley Orgánica 15/1999, de 13 de diciembre, sobre Protección de Datos de Carácter Personal, se le informa que los datos personales proporcionados se incorporarán (o actualizarán) a los ficheros titularidad de ROITING MARKETING ONLINE S.L.U.
La finalidad del tratamiento de los datos será la de gestionar los datos de los clientes/usuarios que accedan al formulario de contacto de la página Web de la entidad.
Los datos personales solicitados en este documento son de carácter obligatorio, por lo que su no cumplimentación supone la imposibilidad de su inclusión en los ficheros antes descritos y de cumplir con la finalidad definida en el párrafo anterior. Ud. tiene derecho al acceso, rectificación, cancelación, oposición, limitación y portabilidad en los términos previstos en la Ley, que podrá ejercitar mediante correo electrónico a info@roiting.com