Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/soymegh/mi-migrator/archive/refs/heads/main.zip🚚 Mi Migrador
Respalda, migra y restaura tu sitio WordPress. Sin límite de tamaño. Gratis y en español.
Compatible con los archivos .wpress de All-in-One WP Migration, en los dos sentidos.
Descargar · Cómo se usa · Contribuir
English · Español
¿Por qué otro migrador?
Porque migrar un sitio no debería costar una licencia ni terminar en "el archivo excede el tamaño máximo permitido".
- 🆓 Sin límite de tamaño, sin extensiones de pago. Todo se procesa por partes de unos segundos:
da igual el
max_execution_timeo el límite de subida de tu hosting. El archivo se sube en trozos y, si se corta la conexión, continúa donde iba. - 🔁 Usa el formato
.wpress. Importa respaldos hechos con All-in-One WP Migration, y All-in-One importa los de Mi Migrador. No tienes que cambiar tu forma de trabajar. - 🛡️ No rompe tu sitio si algo falla. La base de datos se carga en tablas temporales y se
activa con un único
RENAME TABLEatómico. Si cancelas o falla antes de ese paso, tu sitio queda exactamente como estaba. - 🧩 Te pregunta qué plugins llevar. Antes de respaldar o importar revisa tus plugins y te avisa de duplicados, plugins de pago, posibles copias "nulled", plugins desactivados y otros migradores. (Ver más abajo.)
- 🇪🇸 Pensado en español. Interfaz, mensajes de error, documentación y soporte en español. También está en inglés, para que lo uses con clientes de cualquier país.
En pruebas importó un respaldo real de All-in-One de 1.5 GB y 30 000 archivos en 42 segundos (servidor local).
✨ Lo que hace
| Exportar | Base de datos + wp-content en un .wpress. Puedes excluir medios, plugins, temas, must-use plugins, base de datos, comentarios spam o revisiones. |
| Importar | Archivos .wpress de Mi Migrador y de All-in-One WP Migration. Cambia solas las URL del sitio viejo por las del nuevo, incluso dentro de datos serializados y JSON (Elementor, opciones de temas, widgets…). |
| Revisión de plugins | Antes de respaldar o importar te muestra cada plugin con avisos y te deja elegir cuáles llevar. |
| Respaldos programados | Diarios o semanales, a la hora que elijas, conservando los últimos N. |
| Google Drive (beta) | Subida reanudable, carpeta propia y rotación de copias, con tus propias credenciales OAuth: nada pasa por servidores de terceros. |
| WP-CLI | wp mimig export, import, plugins, list, delete, drive-upload. |
🧩 Revisión de plugins: migra limpio
La mayoría de los problemas después de una migración vienen de los plugins: dos plugins de SEO peleándose, una licencia que no funciona en el dominio nuevo o un plugin "nulled" que nadie recuerda haber instalado. Mi Migrador los revisa antes de mover nada:
| Aviso | Qué detecta |
|---|---|
| 🔴 Sin licencia | Posibles copias "nulled": textos típicos de sitios de descarga pirata, o código que fuerza la licencia a "válida". Suelen traer código malicioso. |
| 🟡 Duplicado | Dos plugins activos que hacen lo mismo: SEO, caché, SMTP, seguridad, optimización de imágenes, reservas, respaldos o SSL. |
| 🔵 De pago | Plugins premium cuya licencia suele estar atada al dominio. |
| ⚪ Desactivado | Plugins apagados que probablemente no necesitas llevar. |
| 🟣 Otro migrador | All-in-One, Duplicator y similares: ya no hacen falta. |
- Al exportar, desmarca los que no quieras: no se copian y no quedan activos en el sitio nuevo.
- Al importar, eliges para cada plugin: Importar, Conservar la de este sitio (por ejemplo, si aquí ya tienes la versión con licencia o una más nueva) o No migrar.
Las sugerencias son orientativas: siempre decides tú.
🚀 Migrar un sitio en 3 pasos
- En el sitio viejo: Mi Migrador → Exportar → Crear respaldo. Descárgalo desde Respaldos.
- En el sitio nuevo (sirve un WordPress recién instalado): instala Mi Migrador, ve a
Importar, arrastra el
.wpress, revisa los plugins y continúa. - Inicia sesión con un usuario del sitio importado. Listo.
El sitio nuevo conserva su propia URL y su prefijo de tablas. Del viejo llegan el contenido, los usuarios, los ajustes, el tema y los plugins activos.
Restaurar es igual de fácil: Respaldos → Restaurar.
📦 Instalación
- Descarga
mi-migrador-x.y.z.zipdesde Releases. - En WordPress: Plugins → Añadir nuevo → Subir plugin y elige el
.zip. - Actívalo. Aparece el menú Mi Migrador.
Requisitos: WordPress 5.8+, PHP 7.4+ (64 bits para archivos de más de 2 GB) y MySQL o MariaDB. Por ahora no es compatible con multisitio.
¿Prefieres armar el zip tú mismo? python bin/build.py lo genera en dist/.
🌍 Idiomas
La interfaz sigue el idioma de tu WordPress (o el de tu usuario):
- Español (
es_*): es el idioma original del plugin. - Inglés (
en_US): también se usa para cualquier otro idioma que todavía no tenga traducción propia.
¿Lo quieres en tu idioma? Traduce languages/mi-migrador.pot (por ejemplo con Poedit) y
manda un pull request con tus archivos mi-migrador-xx_XX.po y .mo.
⌨️ WP-CLI
wp mimig export --exclude=media,spam --tag=antes-de-actualizar
wp mimig import respaldo.wpress --yes # ruta o nombre de un respaldo de la carpeta
wp mimig plugins # revisión de los plugins de este sitio
wp mimig plugins respaldo.wpress # ... o de los que trae un respaldo
wp mimig export --suggested # deja fuera los plugins sugeridos
wp mimig export --exclude-plugins=query-monitor,hello-dolly
wp mimig import respaldo.wpress --yes --suggested
wp mimig import respaldo.wpress --yes --exclude-plugins=wp-rocket --keep-local-plugins=seo-by-rank-math-pro
wp mimig list
wp mimig delete nombre.wpress
wp mimig drive-upload nombre.wpress
☁️ Google Drive (beta)
- En Google Cloud Console: crea un proyecto, activa Google Drive API y configura la pantalla de consentimiento (tipo Externo, con tu correo como usuario de prueba).
- Crea credenciales: ID de cliente de OAuth → Aplicación web.
- En URI de redireccionamiento autorizados pega la que muestra el plugin en Programados y Drive.
- Copia el ID y el secreto en el plugin y pulsa Guardar y conectar.
El permiso que se pide es drive.file: el plugin solo ve los archivos que él mismo crea.
La subida a Drive está probada contra una API simulada (cortes de red, reanudación, rotación). Si la usas con tu cuenta, cuéntanos cómo te fue en un issue.
🔒 Seguridad
- Toda acción exige permisos de administrador (
manage_options) y un nonce. - Los respaldos se guardan en
wp-content/mi-migrador-backups/, protegida con.htaccess,web.configeindex.php, y con nombres aleatorios (para nginx, que ignora.htaccess). Las descargas siempre pasan por PHP con permiso y nonce. - Al importar se rechazan rutas con
.., absolutas o con unidad de disco. - El reemplazo de URL no usa
unserialize(), así que no ejecuta código de clases desconocidas. - Los tokens de Drive y los ajustes del plugin no viajan dentro de los respaldos.
- Comprueba que el archivo esté completo antes de tocar nada.
- Extrae los archivos a
wp-content(salta el propio plugin y la carpeta de respaldos). - Carga la base de datos en tablas temporales: el sitio sigue funcionando con las suyas.
- Reemplaza las URL en las temporales.
- Cambia temporales por reales en un único
RENAME TABLEatómico y restaura las llaves foráneas con su nombre original.
Si falla o se cancela antes del paso 5, la base de datos queda como estaba y las temporales se borran. Los archivos extraídos en el paso 2 sí se quedan.
Notas- WP-Cron depende de las visitas: en sitios con poco tráfico configura un cron real del
servidor que llame a
wp-cron.phpcada 5 minutos. - Si el origen tenía opciones como
wp_mail_smtpy<prefijo>mail_smtpy el destino usa el prefijowp_, los nombres coinciden al cambiar el prefijo: se conserva el primero y queda un aviso en el registro (All-in-One se comporta igual). - Al desinstalar se borran los ajustes, pero no los respaldos: pueden ser tu única copia.
| Filtro | Para qué |
|---|---|
mimig_step_seconds |
Segundos de trabajo por petición (por defecto 8). |
mimig_export_exclude |
Rutas de wp-content que no se respaldan. |
mimig_export_tables |
Tablas que se exportan. |
mimig_export_excluded_options |
Opciones que no viajan. |
mimig_import_skip |
Rutas del archivo que no se extraen. |
mimig_import_replace |
Pares de reemplazo viejo → nuevo. |
mimig_import_keep_options |
Opciones del destino que sobreviven a la importación. |
mimig_import_deactivate_plugins |
Plugins del origen que no se activan. |
Acciones: mimig_export_done ( $ruta, $job ) y mimig_import_done ( $job ).
🤝 Contribuir
Mi Migrador nace para la comunidad WordPress hispanohablante y crece con ella.
- 🐛 ¿Encontraste un error? Abre un issue con tu versión de WordPress, PHP y hosting, y lo que dice el Registro del proceso.
- 💡 ¿Tienes una idea? También va en un issue. Hay temas abiertos donde la ayuda vale oro: probar Google Drive con cuentas reales, más destinos en la nube (Dropbox, S3, OneDrive), soporte para multisitio y traducciones a otros idiomas (portugués, francés…).
- 🔧 ¿Quieres programar? Haz un fork, crea una rama y manda un pull request. Antes, corre las pruebas:
php tests/test-replacer.php # reemplazo seguro (sin WordPress)
wp eval-file tests/test-resume.php export x 0.1 # exportar con pausas de 0.1 ms
wp eval-file tests/test-resume.php import <archivo> 0.5 # importar con pausas de 0.5 ms
wp eval-file tests/test-cancel.php <archivo> # cancelar a mitad no toca el sitio
wp eval-file tests/test-gdrive-mock.php # Drive contra una API simulada
- ⭐ ¿Te sirvió? Dale una estrella al repo y compártelo en tu comunidad, grupo de Facebook, WordCamp o Meetup. Así llega a más gente.
📄 Licencia
GPL-2.0-or-later, como WordPress. Úsalo, modifícalo y compártelo libremente.
Mi Migrador es un proyecto independiente. No está afiliado a ServMask ni a All-in-One WP Migration; los nombres se mencionan solo para indicar compatibilidad con su formato de archivo.