🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo migrar una base de datos de WordPress a PrestaShop (SQL)

Actualizado el 26 de abril de 2026

Migrar una tienda online desde WordPress a PrestaShop no es simplemente copiar y pegar archivos. Son dos plataformas con arquitecturas de base de datos radicalmente diferentes. WordPress organiza todo en tablas como wp_posts y wp_postmeta, mientras que PrestaShop utiliza un esquema relacional complejo con más de 300 tablas interconectadas. Intentar importar directamente un archivo SQL de WordPress a PrestaShop provocará errores catastróficos, pérdida de datos y una tienda inservible.

Este artículo es una guía práctica y paso a paso para realizar una migración SQL ecommerce segura. No te prometo que sea un proceso automático de un clic, pero sí te daré un método estructurado que te permitirá llevarlo a cabo sin volverte loco. Aprenderás a exportar SQL WordPress, transformar los datos y importar SQL PrestaShop de forma controlada.

¿Por qué no se puede importar directamente la base de datos?

Antes de ensuciarnos las manos con código, es crucial entender el "porqué". Si intentas importar un volcado de phpMyAdmin de WordPress en una instalación de PrestaShop, el sistema simplemente no reconocerá la estructura. PrestaShop espera tablas con nombres como ps_product, ps_customer o ps_orders. WordPress tiene wp_posts, wp_options y wp_users.

La diferencia no es solo de nombres, sino de lógica. En WordPress, un producto podría ser un "post" con un tipo personalizado. En PrestaShop, un producto vive en ps_product y tiene atributos en ps_product_attribute, combinaciones en ps_product_attribute_combination, etc. La base de datos wordpress a prestashop requiere un mapeo semántico, no una copia física.

Por eso, migrar wordpress a prestashop no es un volcado de SQL, sino un proceso de transformación de datos. Lo que vamos a hacer es extraer la información útil (productos, clientes, pedidos, categorías) de WordPress y formatearla para que PrestaShop pueda ingerirla.

Fase 1: Preparación y copia de seguridad

Esta es la regla de oro de cualquier migración: nunca trabajes sobre el entorno de producción sin una red de seguridad.

1.1. Realiza una copia de seguridad completa de WordPress

Accede a tu panel de control de hosting (si usas Syspanel, recuerda que el puerto de acceso es el 2106) y localiza la herramienta de gestión de bases de datos, normalmente phpMyAdmin.

Sigue estos pasos para exportar SQL WordPress:

  1. Selecciona la base de datos de tu WordPress en el panel izquierdo.
  2. Haz clic en la pestaña "Exportar".
  3. Elige el método "Rápido" (solo mostrará un mínimo de opciones) o "Personalizado" si necesitas control total.
  4. Asegúrate de que el formato sea SQL.
  5. Si usas el método personalizado, marca la opción "Agregar DROP TABLE / VIEW / PROCEDURE / FUNCTION" y "Agregar IF NOT EXISTS". Esto facilitará la limpieza si tienes que reintentar.
  6. Pulsa "Continuar" y descarga el archivo .sql a tu ordenador.

Guarda este archivo en un lugar seguro. No es el que vas a importar directamente, pero es tu salvavidas.

1.2. Prepara un entorno de pruebas (Localhost o subdominio)

No migres directamente a tu tienda en producción. Instala una copia nueva de PrestaShop en un subdominio (ej: test.tutienda.com) o en tu ordenador con un software como XAMPP o Laragon.

Necesitas una instalación limpia de PrestaShop para tener las tablas base creadas. Este será tu "lienzo" para pintar los datos migrados.

[WARNING] No intentes importar datos en una base de datos de PrestaShop que ya tenga productos. El resultado será un desastre con IDs duplicados y relaciones corruptas. Usa siempre una instalación limpia.

Fase 2: La estrategia de migración (No es un volcado, es un mapeo)

Como hemos dicho, no hay un botón mágico. La estrategia se divide en dos tipos de datos:

  • Datos Maestros: Categorías, productos, clientes, fabricantes.
  • Datos Transaccionales: Pedidos, facturas, carritos abandonados.

Mi consejo es que no migres los pedidos antiguos en una primera fase. Es complejo y arriesgado. Migra los datos maestros para lanzar tu tienda y, más adelante, con herramientas avanzadas, plantéate los históricos. Para este tutorial, nos centraremos en productos y categorías, que es lo que suele demandar el 90% de los casos.

2.1. Extraer datos de WordPress con consultas SQL

Vamos a usar phpMyAdmin para ejecutar consultas SQL que extraigan los datos de WordPress en un formato "plano" que luego podamos manipular.

Paso 1: Exportar categorías

Las categorías en WordPress están en wp_terms y wp_term_taxonomy. Ejecuta esta consulta en la pestaña "SQL" de tu base de datos WordPress:

SELECT
  t.term_id AS id_categoria,
  t.name AS nombre,
  tt.parent AS id_padre,
  t.slug AS url_amigable
FROM wp_terms t
INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category'
ORDER BY tt.parent ASC, t.term_id ASC;

Esto te dará una lista de tus categorías. Luego, exporta este resultado como CSV (desde la opción "Exportar" en la parte inferior de los resultados). Este CSV lo tendrás que transformar ligeramente para que coincida con las columnas de ps_category y ps_category_lang.

Paso 2: Exportar productos

Aquí la cosa se complica. Un producto en WooCommerce (el plugin de ecommerce más común) guarda el título y la descripción en wp_posts, y los precios y metadatos en wp_postmeta.

Ejecuta esta consulta para obtener los datos base de los productos:

SELECT
  p.ID AS id_producto,
  p.post_title AS nombre,
  p.post_content AS descripcion,
  p.post_excerpt AS resumen,
  p.post_status AS estado,
  p.post_date AS fecha_creacion
FROM wp_posts p
WHERE p.post_type = 'product'
AND p.post_status = 'publish';

Ahora, necesitas el precio. La consulta para obtener el precio regular:

SELECT
  p.ID AS id_producto,
  pm.meta_value AS precio
FROM wp_posts p
INNER JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND pm.meta_key = '_regular_price';

El problema es que tienes que combinar esto con las imágenes, el stock y las categorías. Es un trabajo de "costura" de datos.

[TIP] Para una migración más limpia, exporta cada tabla (productos, precios, stock, imágenes) como archivos CSV separados. Luego, usa un programa de hoja de cálculo (Excel, Google Sheets) para unirlos mediante la función BUSCARV o VLOOKUP. Esto es tedioso pero muy efectivo.

Fase 3: Preparar los datos para PrestaShop

PrestaShop tiene una estructura de tablas muy específica. Necesitas al menos rellenar estas tablas:

  • ps_product: El núcleo del producto (ID, referencia, precio, cantidad, etc.).
  • ps_product_lang: Nombre y descripción en cada idioma.
  • ps_category_product: La relación entre productos y categorías.
  • ps_image: La referencia a las imágenes.

3.1. El formato de PrestaShop

Aquí es donde la gente se frustra. PrestaShop no lee un CSV de "nombres y precios" directamente. Necesitas seguir su esquema de columnas exacto.

Te recomiendo encarecidamente que no construyas el SQL a mano. Es propenso a errores. En su lugar, sigue estos pasos:

  1. Instala un módulo de importación CSV avanzado en tu PrestaShop de prueba. Aunque PrestaShop tiene un importador nativo en Parámetros Avanzados > Importar, es limitado. Módulos como "Advanced CSV Import" te permiten mapear columnas de tu CSV de WordPress a los campos de PrestaShop.
  2. Formatea tus CSVs siguiendo la guía del módulo. Normalmente necesitarás un CSV para categorías y otro para productos.
  3. Sube las imágenes por separado. PrestaShop necesita que las imágenes estén en la carpeta /img/p/ con una estructura de carpetas específica, o usar un módulo que las descargue desde URLs.

3.2. Generar el SQL de inserción

Si eres valiente y quieres hacerlo directamente con SQL, necesitas crear sentencias INSERT INTO. Por ejemplo, para insertar un producto en ps_product, el SQL sería algo así:

INSERT INTO `ps_product` (
  `id_product`, `id_supplier`, `id_manufacturer`, `id_category_default`,
  `price`, `reference`, `active`, `date_add`
) VALUES (
  1001, 0, 0, 2,
  19.99, 'PROD-1001', 1, NOW()
);

Y luego en ps_product_lang:

INSERT INTO `ps_product_lang` (
  `id_product`, `id_lang`, `name`, `description`, `link_rewrite`
) VALUES (
  1001, 1, 'Mi Producto Migrado', '<p>Descripción larga</p>', 'mi-producto-migrado'
);

[WARNING] Generar este SQL manualmente para cientos de productos es una locura. Un solo error en una coma o una comilla romperá la integridad referencial. Si no tienes experiencia sólida con SQL, opta por los módulos de importación CSV. Son más seguros y visuales.

Fase 4: El proceso de importación

Una vez que tengas tus archivos CSV perfectamente formateados y mapeados, es hora de la acción.

4.1. Importar categorías primero

Las categorías deben existir antes que los productos. En el importador de PrestaShop, selecciona tu CSV de categorías y mapea las columnas:

  • id_categoria -> id_category
  • nombre -> name
  • id_padre -> id_parent (si es 0, será categoría raíz)

4.2. Importar productos

Ahora, con el CSV de productos, mapea:

  • id_producto -> id_product (asigna un ID nuevo si no quieres conflictos).
  • nombre -> name
  • descripcion -> description
  • precio -> price
  • estado -> active (1 para publicado, 0 para borrador).

4.3. Importar la relación producto-categoría

Este es el paso final. Necesitas un CSV que contenga dos columnas: id_product e id_category. PrestaShop lo importará en la tabla ps_category_product.

Fase 5: Verificación y limpieza post-migración

No des por hecho que todo ha ido bien. La migración SQL ecommerce requiere una verificación exhaustiva.

5.1. Comprueba el front-office

Entra en tu tienda de pruebas y revisa:

  • ¿Se ven las imágenes?
  • ¿Los precios son correctos?
  • ¿Los enlaces funcionan? (La URL amigable de PrestaShop se genera en ps_product_lang.link_rewrite, si no la has rellenado, dará error 404).
  • ¿Las categorías tienen productos asignados?

5.2. Limpieza de datos huérfanos

Es probable que te encuentres con productos sin categoría o categorías vacías. Puedes ejecutar consultas SQL para limpiarlos. Por ejemplo, para eliminar productos sin categoría:

DELETE FROM ps_product
WHERE id_product NOT IN (SELECT id_product FROM ps_category_product);

5.3. Regenerar el caché

En el panel de administración de PrestaShop, ve a Parámetros Avanzados > Rendimiento y pulsa "Vaciar el caché". Esto es crucial para que los cambios se reflejen.

Preguntas Frecuentes (FAQ)

¿Puedo migrar clientes y contraseñas de WordPress a PrestaShop?

Sí, pero las contraseñas son el mayor problema. WordPress usa un hash $P$B... y PrestaShop usa un hash $2y$... (bcrypt). No son compatibles. Si importas los clientes, tendrán que usar la opción "¿Olvidaste tu contraseña?" para crear una nueva. Es un paso inevitable.

¿Qué pasa con los pedidos antiguos?

Como mencioné, es muy complejo. Necesitas módulos especializados de pago que mapeen las tablas de pedidos de WooCommerce a las de PrestaShop. Para una primera migración, te recomiendo empezar con los productos y lanzar la tienda. Los pedidos históricos pueden quedar en WordPress como un archivo muerto o consultable en tu antiguo hosting.

¿Pierdo el SEO al migrar?

Sí, el SEO se ve afectado. Las URLs de WordPress (/producto/mi-articulo/) son diferentes a las de PrestaShop (/index.php?id_product=1001 o /mi-articulo/ si activas las URLs amigables). Deberás configurar redirecciones 301 desde las URLs antiguas a las nuevas. Esto es fundamental para no perder posicionamiento en Google.

¿Cuánto tiempo tarda el proceso?

Para una tienda pequeña (menos de 100 productos), puedes hacerlo en un fin de semana. Para tiendas grandes, es un proyecto de varios días. La mayor parte del tiempo se va en limpiar los CSVs y en la verificación.

¿Existe alguna herramienta automática?

Sí, existen módulos de pago como "CMS Migration" de PrestaShop o servicios de terceros como Cart2Cart. Estas herramientas automatizan el mapeo y la transferencia de datos. Son más caras, pero te ahorran un dolor de cabeza enorme. Si tu presupuesto lo permite, es la opción más recomendable.

Conclusión

Migrar una base de datos wordpress a prestashop es un desafío técnico que no debe tomarse a la ligera. No es un proceso de copiar y pegar, sino de transformación. Recuerda los pasos clave:

  1. Realiza copias de seguridad de todo.
  2. Trabaja en un entorno de pruebas.
  3. Exporta los datos de WordPress a CSV (no a SQL).
  4. Usa un módulo de importación de PrestaShop para mapear los campos.
  5. Verifica y limpia los datos importados.

Si sigues estos pasos con paciencia y meticulosidad, podrás realizar la migración SQL ecommerce con éxito. No tengas miedo de pedir ayuda a un desarrollador si te sientes abrumado en la parte de las consultas SQL complejas. Al final, tendrás una tienda PrestaShop limpia y funcional, lista para escalar tu negocio.

[INFO] Si tu hosting usa Syspanel, recuerda que el puerto de acceso al panel es el 2106. Utiliza esta vía para acceder a phpMyAdmin y gestionar tus bases de datos de forma segura.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel