Introducción
El contenido duplicado es uno de los problemas más invisibles pero críticos en WordPress, especialmente en sitios con muchos artículos, autores o migraciones de contenido.
¿Qué es el contenido duplicado?
Es cuando varias páginas comparten el mismo contenido o muy similar. Esto confunde a los motores de búsqueda y reduce la visibilidad SEO de tu web.
En este artículo aprenderás a detectar distintos tipos de contenido duplicado directamente desde la base de datos, usando MySQL, sin plugins, y con precisión quirúrgica.
Índice
1. Tipos de contenido duplicado
2. Consultas SQL para detectar duplicados
3. Qué hacer con los duplicados encontrados
5. Exportar resultados a CSV desde PHP
1. Tipos de contenido duplicado
Tipo | Descripción | Impacto en SEO |
Títulos duplicados | Varias entradas con el mismo título | Confusión de keywords |
Slugs (URLs) repetidos | URLs similares (slug-2, slug-3…) tras importar contenido | Fragmentación de autoridad |
Contenido (post_content) igual | Mismo cuerpo de texto en diferentes posts | Penalización directa por duplicación |
Metadescripciones iguales | Campos SEO (meta_description) repetidos | Bajada en CTR en resultados de búsqueda |
Etiquetas/categorías similares | Taxonomías con el mismo nombre | Páginas de archivo duplicadas |
2. Consultas SQL para detectar duplicados
Detectar títulos duplicados
SELECT post_title, COUNT(*) AS repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_title HAVING repeticiones > 1;
Qué hace: agrupa por título y detecta los que están repetidos.
Útil para: descubrir artículos con el mismo encabezado tras migraciones, autores diferentes o redacción poco cuidada.
Detectar contenido idéntico
SELECT post_content, COUNT(*) AS repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_content HAVING repeticiones > 1;
Qué hace: agrupa por contenido idéntico (post_content).
Puedes añadir LENGTH(post_content) > 100 para evitar detectar contenidos vacíos o triviales.
Detectar slugs repetidos
SELECT post_name, COUNT(*) as repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_name HAVING repeticiones > 1;
Esto te ayudará a localizar URLs que WordPress ha generado como nombre-del-post-2, nombre-del-post-3, etc.
Es típico tras importar contenido varias veces o al clonar artículos.
3. Qué hacer con los duplicados encontrados
Acción | Cuándo aplicarla | Cómo hacerlo |
---|---|---|
Eliminar | Contenido irrelevante o pruebas | Desde admin o SQL |
Unificar | 2 posts similares | Copiar lo útil y redirigir |
Redirigir | Slugs duplicados | 301 o plugin |
4. Comparativa SQL vs Plugin
Método | Precisión | Velocidad | Ideal para |
---|---|---|---|
SQL | Alta | Muy rápida | Auditorías técnicas |
Plugin SEO | Media | Variable | Usuarios no técnicos |
5. Exportar resultados a CSV desde PHP
<?php require('wp-load.php'); global $wpdb; $results = $wpdb->get_results(" SELECT post_title, COUNT(*) AS repeticiones FROM {$wpdb->prefix}posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_title HAVING repeticiones > 1 ", ARRAY_A); header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=duplicados.csv'); $output = fopen('php://output', 'w'); fputcsv($output, ['Título', 'Repeticiones']); foreach ($results as $row) { fputcsv($output, $row); } fclose($output); exit; ?>
6. Conclusión
Con estas herramientas puedes auditar tu WordPress y limpiar contenido duplicado fácilmente. Mejorarás SEO, evitarás confusiones y optimizarás tu contenido.