✅¿Y Si te Digo que Puedes Duplicar Cualquier Contenido en WordPress sin Plugins?

Seguro que alguna vez has querido duplicar una entrada, una página o un producto de WooCommerce. Lo típico: quieres hacer una copia rápida para modificar algo sin tocar el original.
Y como muchos, quizá hayas tirado de plugins como Yoast Duplicate Post o similares.

Pero… ¿y si te digo que no necesitas ningún plugin para hacer esto?

Sí, así como lo lees. Con menos de 100 líneas de código puedes añadir una opción de “Duplicar” en el panel de administración de WordPress para cualquier tipo de contenido: entradas, páginas, productos o cualquier Custom Post Type (CPT) que tengas.

duplicar entradas wordpress

Qué hace este código

Este código:

  • Añade un enlace «Duplicar» debajo de cada contenido en el admin.
  • Crea una copia exacta como borrador, con:
    • El título original + «(Copia)»
    • El mismo contenido
    • El mismo extracto
    • Categorías y etiquetas copiadas
    • Cualquier taxonomía personalizada (como los atributos de WooCommerce)
    • Todos los campos personalizados (metadatos), como precios, imágenes, niveles de acceso, etc.
    • El mismo tipo de contenido (post, page, product, portfolio, etc.)

Y lo mejor: funciona para cualquier CPT, no solo para entradas o páginas.

duplicar entradas paginas wordpress

Cómo funciona

  1. Al pegar el código en tu functions.php (o en Code Snippets), WordPress detecta todos los tipos de contenido público.
  2. Añade una acción en el menú de cada uno para que puedas duplicarlo.
  3. Al hacer clic en “Duplicar”, te lleva al editor con una copia nueva del contenido original, en estado borrador.

No hace falta configurar nada. Todo es automático.

¿Qué ventaja tiene frente a un plugin?

  • Cero sobrecarga: no cargas librerías ni funciones extra.
  • Control total: puedes adaptarlo, personalizarlo, limitarlo por rol, etc.
  • Compatible con WooCommerce, ACF, Custom Post Types…
  • Funciona con taxonomías personalizadas y campos avanzados.

Y si algún día quieres desactivarlo, simplemente borras el código y listo.

Qué no hace (por si lo necesitas saber)

Aunque este sistema es bastante completo, hay algunas limitaciones:

  • No copia los archivos físicos de imagen. Las imágenes (tanto destacadas como del contenido) se mantienen, pero no se duplica el archivo en la biblioteca de medios. La copia usa la misma imagen que el original.
  • No deja elegir qué copiar. Duplica todo tal cual: título, contenido, campos personalizados, taxonomías, etc. No es selectivo.
  • No es masivo. Solo permite duplicar entradas de una en una desde el enlace en el listado del admin.

¿Dónde colocar el código?

Puedes:

  • Pegarlo directamente en el functions.php de tu tema hijo.
  • O usar el plugin Code Snippets (modo solo administración).
duplicar clonar entradas paginas wordpress productos

// Acción que realiza la duplicación
function pw_duplicar_post_como_borrador() {
	if (
		! isset($_GET['post']) ||
		! isset($_GET['action']) ||
		$_GET['action'] !== 'pw_duplicar_post' ||
		! current_user_can('edit_posts')
	) {
		return;
	}

	$post_id = absint($_GET['post']);
	$post = get_post($post_id);

	if (! $post) {
		wp_die('Entrada no encontrada.');
	}

	// Datos base del nuevo post
	$new_post_args = [
		'post_title'   => $post->post_title . ' (Copia)',
		'post_content' => $post->post_content,
		'post_excerpt' => $post->post_excerpt,
		'post_status'  => 'draft',
		'post_type'    => $post->post_type,
		'post_author'  => get_current_user_id()
	];

	$new_post_id = wp_insert_post($new_post_args);

	// Copiar taxonomías (categorías, etiquetas, atributos, etc.)
	$taxonomias = get_object_taxonomies($post->post_type);
	foreach ($taxonomias as $taxonomia) {
		$terms = wp_get_object_terms($post_id, $taxonomia, ['fields' => 'slugs']);
		wp_set_object_terms($new_post_id, $terms, $taxonomia, false);
	}

	// Copiar metadatos
	$meta = get_post_meta($post_id);
	foreach ($meta as $clave => $valores) {
		foreach ($valores as $valor) {
			update_post_meta($new_post_id, $clave, maybe_unserialize($valor));
		}
	}

	// Redirigir al editor del nuevo post
	wp_redirect(admin_url('post.php?action=edit&post=' . $new_post_id));
	exit;
}
add_action('admin_action_pw_duplicar_post', 'pw_duplicar_post_como_borrador');


// Agregar el enlace "Duplicar" a cualquier CPT
function pw_agregar_enlace_duplicar($acciones, $post) {
	if (current_user_can('edit_posts')) {
		$url = wp_nonce_url(
			admin_url('admin.php?action=pw_duplicar_post&post=' . $post->ID),
			basename(__FILE__),
			'_wpnonce'
		);
		$acciones['duplicar'] = '<a href="' . esc_url($url) . '" title="Duplicar este contenido">Duplicar</a>';
	}
	return $acciones;
}

// Aplicar a cualquier tipo de contenido registrado
function pw_agregar_duplicar_a_todos_los_cpts() {
	$post_types = get_post_types(['public' => true], 'names');
	foreach ($post_types as $post_type) {
		add_filter($post_type . '_row_actions', 'pw_agregar_enlace_duplicar', 10, 2);
	}
}
add_action('admin_init', 'pw_agregar_duplicar_a_todos_los_cpts');

Lenguaje del código: PHP (php)

Conclusión

Con este código, duplicar contenido en WordPress sin usar plugins es no solo posible, sino súper eficiente.
Perfecto si estás montando tiendas con WooCommerce, sitios con CPTs personalizados o simplemente quieres un flujo de trabajo más rápido sin añadir más plugins al sitio.

Nos vemos en el siguiente tutorial. Un saludo.

5/5 - (2 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    ¿Tienes alguna duda u opinión? Déjala en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

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

0%