https://srmomo.com/migrar-wordpress/
Manual proceso paos a paos para
Migrar web de dominia www.A..com a www.ab.com de wordpress
Paso 0: Preparativos previos
-
Reducir TTL del DNS
En tu panel de DNS (registrador o hosting), baja el TTL de los registros A/CNAME a un valor bajo (p.ej. 300 s) para que el cambio apunte rápido al nuevo servidor. -
Configurar hosting/dominio
-
Apunta www.ab.com al servidor destino (vía registro DNS registros A y CNAME).
-
Si vas a usar el mismo hosting, crea un nuevo vHost o carpeta raíz (p.ej. /public_html/ab.com).
-
Si el destino es el mismo servidor de destino, debes crear una base de datos vacía con nombre diferente esto evitara que la base de datos del dominio A genere problema con la del B
SSL/TLS
-
Genera o importa tu certificado en el servidor (Let’s Encrypt, Cloudflare, etc.).
Paso 1 - Realice copia de seguridad de todos los ficheros desde la carpeta Raiz de la web en un archivo comprimido limpio
Paso 2 - Descargue una copia de la base de datos desde php admin completa de la base de datos, verifique que el peso sea el mismo de la base datos
paso 3 - Suba los ficheros en el archivo zip al nuevo servidor y descomprima
Paso 4 - Cree la base de datos vacía, e importa todos los datos de la base de datos del otro dominio cargue la base de datos.
Nombre Bd:restacarto422
Nombre User: usecartoix676
Nombre contraseña: skh87jbs6
Paso 5 - Actualice el archivo Abre tu wp-config.php en la carpeta clonada y cambia con los datos reales:
Prefijo tablas:
Paso 6 - actualice todas las url de la base de datos de www.A..com a www.ab.com
desde la consola de phpmyadmin ejecute el siguiente comando remplazo las urls reales:
reuiqere prefijo de la base de datos:
Nombre del abase de datos
dominio A:
Dominio B:
-- 1) Home y Site URL
UPDATE `f6Z3ytzL_options`
SET `option_value` = REPLACE(
`option_value`,
'https://lacartoixacomidasparallevar.es',
'https://restaurantelacartoixa.es'
)
WHERE `option_name` IN ('home','siteurl');
-- 2) Contenido de posts/páginas
UPDATE `f6Z3ytzL_posts`
SET `post_content` = REPLACE(
`post_content`,
'https://lacartoixacomidasparallevar.es',
'https://restaurantelacartoixa.es'
);
-- 3) Metadatos de posts (ACF, campos personalizados…)
UPDATE `f6Z3ytzL_postmeta`
SET `meta_value` = REPLACE(
`meta_value`,
'https://lacartoixacomidasparallevar.es',
'https://restaurantelacartoixa.es'
);
-- 4) Metadatos de usuarios (si hay URLs en perfiles u otros campos)
UPDATE `f6Z3ytzL_usermeta`
SET `meta_value` = REPLACE(
`meta_value`,
'https://lacartoixacomidasparallevar.es',
'https://restaurantelacartoixa.es'
);
-- 5) Tabla de enlaces (opcional si usas el gestor de enlaces de WP)
UPDATE `f6Z3ytzL_links`
SET `link_url` = REPLACE(
`link_url`,
'https://lacartoixacomidasparallevar.es',
'https://restaurantelacartoixa.es'
);
paso dos del 6: buscar registros de la url antigua:
SELECT 'options' AS tabla, COUNT(*) AS restos
FROM `f6Z3ytzL_options`
WHERE `option_value` LIKE '%lacartoixacomidasparallevar.es%';
SELECT 'posts' AS tabla, COUNT(*) AS restos
FROM `f6Z3ytzL_posts`
WHERE `post_content` LIKE '%lacartoixacomidasparallevar.es%';
SELECT 'postmeta' AS tabla, COUNT(*) AS restos
FROM `f6Z3ytzL_postmeta`
WHERE `meta_value` LIKE '%lacartoixacomidasparallevar.es%';
SELECT 'usermeta' AS tabla, COUNT(*) AS restos
FROM `f6Z3ytzL_usermeta`
WHERE `meta_value` LIKE '%lacartoixacomidasparallevar.es%';
SELECT 'links' AS tabla, COUNT(*) AS restos
FROM `f6Z3ytzL_links`
WHERE `link_url` LIKE '%lacartoixacomidasparallevar.es%';
Paso 7 - Actualice el archivo Abre tu wp-config.php en la carpeta clonada y cambia:
Paso 8 : Regenerar permalinks
wp rewrite flush
Esto fuerza a WordPress a limpiar y reconstruir sus reglas de reescritura, evitando 404 en tus permalinks.
Paso 9: Limpiar caché de objeto
wp cache flush
Útil si usas un object cache (Memcached, Redis). Para plugins de caché tipo WP Rocket u otros, usa su propio comando CLI o vacía manualmente.
Paso 10: Actualizar los valores de PHP
memory_limit =
WP_MAX_MEMORY_LIMIT=
Paso 11: DNS y TTL (si toca)
Cambia los registros A/CNAME de www.A.com al servidor nuevo.
Gracias al Dry-Run previo y al TTL bajo, el impacto será mínimo.
Cuando todo esté OK, sube de nuevo el TTL a un valor normal (p.ej. 3600 s).
Paso 11: consulte la pagina web Consulte la pagina web
Paso 12: Verificar el sitio
Accede a www.ab.com, revisa navegación, enlaces, formularios, imágenes y realiza pruebas completas de funcionamiento.
UPDATE index_options SET option_value = REPLACE ( option_value, 'https://essenzanatura.es', 'https://antigua.essenzanatura.es' );
UPDATE index_posts SET guid = REPLACE ( guid, 'https://essenzanatura.es', 'https://antigua.essenzanatura.es' );
UPDATE index_posts SET post_content = REPLACE ( post_content, 'https://essenzanatura.es', 'https://antigua.essenzanatura.es' );
UPDATE index_postmeta SET meta_value = REPLACE ( meta_value, 'https://essenzanatura.es', 'https://
antigua.essenzanatura.es' );
UPDATE 7eH7jyl4n_options
SET option_value = REPLACE(
option_value,
'seguroscifresapena.es',
'valenciaseguroscifresapena.es'
);
UPDATE 7eH7jyl4n_posts
SET post_content = REPLACE(
post_content,
'seguroscifresapena.es',
'valenciaseguroscifresapena.es'
);
UPDATE 7eH7jyl4n_postmeta
SET meta_value = REPLACE(
meta_value,
'seguroscifresapena.es',
'valenciaseguroscifresapena.es'
);
Comprobar que no quedan URLs antiguas
SELECT 'options' AS tabla, COUNT(*) AS restos FROM 7eH7jyl4n_options WHERE option_value LIKE '%seguroscifresapena.es%';
SELECT 'posts' AS tabla, COUNT(*) AS restos FROM 7eH7jyl4n_posts WHERE post_content LIKE '%seguroscifresapena.es%';
SELECT 'postmeta' AS tabla, COUNT(*) AS restos FROM 7eH7jyl4n_postmeta WHERE meta_value LIKE '%seguroscifresapena.es%';
SELECT 'usermeta' AS tabla, COUNT(*) AS restos FROM 7eH7jyl4n_usermeta WHERE meta_value LIKE '%seguroscifresapena.es%';
SELECT 'links' AS tabla, COUNT(*) AS restos FROM 7eH7jyl4n_links WHERE link_url LIKE '%seguroscifresapena.es%';
-----
siemore se neceita confirmar el nombde de la bae de dtaos y el prefijo para ejeuctar el borrado
borrar entradas
START TRANSACTION;
/* =========================================================
1. GUARDAR ENTRADAS Y PÁGINA DEL BLOG
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_blog_principales`;
CREATE TEMPORARY TABLE `tmp_blog_principales` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_blog_principales` (`ID`)
SELECT `ID`
FROM `index_posts`
WHERE `post_type` = 'post';
INSERT IGNORE INTO `tmp_blog_principales` (`ID`)
SELECT CAST(`option_value` AS UNSIGNED)
FROM `index_options`
WHERE `option_name` = 'page_for_posts'
AND CAST(`option_value` AS UNSIGNED) > 0;
/* =========================================================
2. INCLUIR REVISIONES Y AUTOGUARDADOS
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_blog_eliminar`;
CREATE TEMPORARY TABLE `tmp_blog_eliminar` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_blog_eliminar` (`ID`)
SELECT `ID`
FROM `tmp_blog_principales`;
INSERT IGNORE INTO `tmp_blog_eliminar` (`ID`)
SELECT p.`ID`
FROM `index_posts` AS p
INNER JOIN `tmp_blog_principales` AS principal
ON principal.`ID` = p.`post_parent`
WHERE p.`post_type` = 'revision';
/* =========================================================
3. DESVINCULAR IMÁGENES SIN BORRARLAS
========================================================= */
UPDATE `index_posts` AS imagen
INNER JOIN `tmp_blog_principales` AS principal
ON principal.`ID` = imagen.`post_parent`
SET imagen.`post_parent` = 0
WHERE imagen.`post_type` = 'attachment';
/* =========================================================
4. BORRAR METADATOS DE COMENTARIOS
========================================================= */
DELETE cm
FROM `index_commentmeta` AS cm
INNER JOIN `index_comments` AS c
ON c.`comment_ID` = cm.`comment_id`
INNER JOIN `tmp_blog_eliminar` AS eliminar
ON eliminar.`ID` = c.`comment_post_ID`;
/* =========================================================
5. BORRAR COMENTARIOS
========================================================= */
DELETE c
FROM `index_comments` AS c
INNER JOIN `tmp_blog_eliminar` AS eliminar
ON eliminar.`ID` = c.`comment_post_ID`;
/* =========================================================
6. BORRAR RELACIONES CON CATEGORÍAS Y ETIQUETAS
========================================================= */
DELETE relacion
FROM `index_term_relationships` AS relacion
INNER JOIN `tmp_blog_eliminar` AS eliminar
ON eliminar.`ID` = relacion.`object_id`;
/* =========================================================
7. BORRAR METADATOS
========================================================= */
DELETE meta
FROM `index_postmeta` AS meta
INNER JOIN `tmp_blog_eliminar` AS eliminar
ON eliminar.`ID` = meta.`post_id`;
/* =========================================================
8. BORRAR ENTRADAS, PÁGINA DEL BLOG Y REVISIONES
========================================================= */
DELETE contenido
FROM `index_posts` AS contenido
INNER JOIN `tmp_blog_eliminar` AS eliminar
ON eliminar.`ID` = contenido.`ID`;
/* =========================================================
9. QUITAR CONFIGURACIÓN DE PÁGINA DE ENTRADAS
========================================================= */
UPDATE `index_options`
SET `option_value` = '0'
WHERE `option_name` = 'page_for_posts';
/* =========================================================
10. ACTUALIZAR CONTADORES DE CATEGORÍAS Y ETIQUETAS
========================================================= */
UPDATE `index_term_taxonomy` AS tt
SET tt.`count` = (
SELECT COUNT(*)
FROM `index_term_relationships` AS tr
WHERE tr.`term_taxonomy_id` = tt.`term_taxonomy_id`
)
WHERE tt.`taxonomy` IN ('category', 'post_tag');
DROP TEMPORARY TABLE IF EXISTS `tmp_blog_eliminar`;
DROP TEMPORARY TABLE IF EXISTS `tmp_blog_principales`;
COMMIT;
verificar
SELECT COUNT(*) AS entradas_restantes
FROM `index_posts`
WHERE `post_type` = 'post';
SELECT
option_name,
option_value
FROM `index_options`
WHERE `option_name` = 'page_for_posts';
--------
elimnar clientes
USE `openlor_2342es`;
START TRANSACTION;
/* =========================================================
1. IDENTIFICAR ADMINISTRADORES
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_admin_ids`;
CREATE TEMPORARY TABLE `tmp_admin_ids` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_admin_ids` (`ID`)
SELECT DISTINCT u.`ID`
FROM `index_users` AS u
INNER JOIN `index_usermeta` AS um
ON um.`user_id` = u.`ID`
WHERE um.`meta_key` = 'index_capabilities'
AND um.`meta_value` LIKE '%"administrator"%';
/* Administrador usado para reasignar páginas y contenidos */
SET @admin_id = (
SELECT MIN(`ID`)
FROM `tmp_admin_ids`
);
SET @permitir_borrado = IF(@admin_id IS NULL, 0, 1);
SELECT
@admin_id AS administrador_conservado,
@permitir_borrado AS borrado_autorizado;
/* =========================================================
2. IDENTIFICAR USUARIOS NO ADMINISTRADORES
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_usuarios_eliminar`;
CREATE TEMPORARY TABLE `tmp_usuarios_eliminar` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_usuarios_eliminar` (`ID`)
SELECT u.`ID`
FROM `index_users` AS u
LEFT JOIN `tmp_admin_ids` AS administrador
ON administrador.`ID` = u.`ID`
WHERE administrador.`ID` IS NULL
AND @permitir_borrado = 1;
/* =========================================================
3. IDENTIFICAR PEDIDOS CLÁSICOS
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_pedidos`;
CREATE TEMPORARY TABLE `tmp_pedidos` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_pedidos` (`ID`)
SELECT `ID`
FROM `index_posts`
WHERE `post_type` IN (
'shop_order',
'shop_order_refund',
'shop_subscription',
'shop_order_placehold'
)
AND @permitir_borrado = 1;
/* =========================================================
4. IDENTIFICAR NOTAS Y COMENTARIOS QUE SE ELIMINARÁN
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_comentarios_eliminar`;
CREATE TEMPORARY TABLE `tmp_comentarios_eliminar` (
`comment_ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_comentarios_eliminar` (`comment_ID`)
SELECT c.`comment_ID`
FROM `index_comments` AS c
LEFT JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = c.`comment_post_ID`
LEFT JOIN `tmp_usuarios_eliminar` AS usuario
ON usuario.`ID` = c.`user_id`
WHERE (
pedido.`ID` IS NOT NULL
OR usuario.`ID` IS NOT NULL
OR c.`comment_type` = 'order_note'
)
AND @permitir_borrado = 1;
/* =========================================================
5. BORRAR METADATOS DE COMENTARIOS Y NOTAS
========================================================= */
DELETE cm
FROM `index_commentmeta` AS cm
INNER JOIN `tmp_comentarios_eliminar` AS eliminar
ON eliminar.`comment_ID` = cm.`comment_id`
WHERE @permitir_borrado = 1;
/* =========================================================
6. BORRAR COMENTARIOS Y NOTAS DE PEDIDOS
========================================================= */
DELETE c
FROM `index_comments` AS c
INNER JOIN `tmp_comentarios_eliminar` AS eliminar
ON eliminar.`comment_ID` = c.`comment_ID`
WHERE @permitir_borrado = 1;
/* =========================================================
7. BORRAR METADATOS DE ARTÍCULOS DE PEDIDO
========================================================= */
DELETE itemmeta
FROM `index_woocommerce_order_itemmeta` AS itemmeta
INNER JOIN `index_woocommerce_order_items` AS item
ON item.`order_item_id` = itemmeta.`order_item_id`
INNER JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = item.`order_id`
WHERE @permitir_borrado = 1;
/* =========================================================
8. BORRAR ARTÍCULOS DE PEDIDOS
========================================================= */
DELETE item
FROM `index_woocommerce_order_items` AS item
INNER JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = item.`order_id`
WHERE @permitir_borrado = 1;
/* =========================================================
9. BORRAR RELACIONES DE PEDIDOS
========================================================= */
DELETE relacion
FROM `index_term_relationships` AS relacion
INNER JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = relacion.`object_id`
WHERE @permitir_borrado = 1;
/* =========================================================
10. BORRAR METADATOS DE PEDIDOS CLÁSICOS
========================================================= */
DELETE meta
FROM `index_postmeta` AS meta
INNER JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = meta.`post_id`
WHERE @permitir_borrado = 1;
/* =========================================================
11. BORRAR PEDIDOS CLÁSICOS
========================================================= */
DELETE contenido
FROM `index_posts` AS contenido
INNER JOIN `tmp_pedidos` AS pedido
ON pedido.`ID` = contenido.`ID`
WHERE @permitir_borrado = 1;
/* =========================================================
12. REASIGNAR PÁGINAS Y CONTENIDOS AL ADMINISTRADOR
========================================================= */
UPDATE `index_posts` AS contenido
INNER JOIN `tmp_usuarios_eliminar` AS usuario
ON usuario.`ID` = contenido.`post_author`
SET contenido.`post_author` = @admin_id
WHERE @permitir_borrado = 1;
/* =========================================================
13. BORRAR CLAVES API DE USUARIOS ELIMINADOS
========================================================= */
DELETE clave
FROM `index_woocommerce_api_keys` AS clave
INNER JOIN `tmp_usuarios_eliminar` AS usuario
ON usuario.`ID` = clave.`user_id`
WHERE @permitir_borrado = 1;
/* =========================================================
14. BORRAR METADATOS DE USUARIOS NO ADMIN
========================================================= */
DELETE meta
FROM `index_usermeta` AS meta
INNER JOIN `tmp_usuarios_eliminar` AS usuario
ON usuario.`ID` = meta.`user_id`
WHERE @permitir_borrado = 1;
/* =========================================================
15. BORRAR USUARIOS NO ADMINISTRADORES
========================================================= */
DELETE usuario
FROM `index_users` AS usuario
INNER JOIN `tmp_usuarios_eliminar` AS eliminar
ON eliminar.`ID` = usuario.`ID`
WHERE @permitir_borrado = 1;
/* =========================================================
16. LIMPIAR DATOS COMERCIALES DE LOS ADMINISTRADORES
Conserva sus cuentas y permisos
========================================================= */
DELETE meta
FROM `index_usermeta` AS meta
INNER JOIN `tmp_admin_ids` AS administrador
ON administrador.`ID` = meta.`user_id`
WHERE @permitir_borrado = 1
AND (
LEFT(meta.`meta_key`, 8) = 'billing_'
OR LEFT(meta.`meta_key`, 9) = 'shipping_'
OR LEFT(meta.`meta_key`, 29) =
'_woocommerce_persistent_cart_'
OR meta.`meta_key` IN (
'paying_customer',
'wc_last_active'
)
);
/* =========================================================
17. LIMPIAR DATOS GENERALES DE CLIENTES
========================================================= */
DELETE FROM `index_woocommerce_payment_tokenmeta`
WHERE @permitir_borrado = 1;
DELETE FROM `index_woocommerce_payment_tokens`
WHERE @permitir_borrado = 1;
DELETE FROM `index_wc_download_log`
WHERE @permitir_borrado = 1;
DELETE FROM `index_woocommerce_downloadable_product_permissions`
WHERE @permitir_borrado = 1;
DELETE FROM `index_woocommerce_sessions`
WHERE @permitir_borrado = 1;
DELETE FROM `index_wc_customer_lookup`
WHERE @permitir_borrado = 1;
DELETE FROM `index_wc_reserved_stock`
WHERE @permitir_borrado = 1;
/* =========================================================
18. FINALIZAR
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_comentarios_eliminar`;
DROP TEMPORARY TABLE IF EXISTS `tmp_pedidos`;
DROP TEMPORARY TABLE IF EXISTS `tmp_usuarios_eliminar`;
DROP TEMPORARY TABLE IF EXISTS `tmp_admin_ids`;
COMMIT;
-----------------
eliminar cupones
USE `openlor_2342es`;
START TRANSACTION;
/* Guardar los cupones que se eliminarán */
DROP TEMPORARY TABLE IF EXISTS `tmp_cupones`;
CREATE TEMPORARY TABLE `tmp_cupones` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_cupones` (`ID`)
SELECT `ID`
FROM `index_posts`
WHERE `post_type` = 'shop_coupon';
/* Incluir revisiones de los cupones */
DROP TEMPORARY TABLE IF EXISTS `tmp_cupones_eliminar`;
CREATE TEMPORARY TABLE `tmp_cupones_eliminar` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_cupones_eliminar` (`ID`)
SELECT `ID`
FROM `tmp_cupones`;
INSERT IGNORE INTO `tmp_cupones_eliminar` (`ID`)
SELECT revision.`ID`
FROM `index_posts` AS revision
INNER JOIN `tmp_cupones` AS cupon
ON cupon.`ID` = revision.`post_parent`
WHERE revision.`post_type` = 'revision';
/* Eliminar metadatos de comentarios asociados */
DELETE cm
FROM `index_commentmeta` AS cm
INNER JOIN `index_comments` AS c
ON c.`comment_ID` = cm.`comment_id`
INNER JOIN `tmp_cupones_eliminar` AS eliminar
ON eliminar.`ID` = c.`comment_post_ID`;
/* Eliminar comentarios asociados */
DELETE c
FROM `index_comments` AS c
INNER JOIN `tmp_cupones_eliminar` AS eliminar
ON eliminar.`ID` = c.`comment_post_ID`;
/* Eliminar relaciones con taxonomías */
DELETE tr
FROM `index_term_relationships` AS tr
INNER JOIN `tmp_cupones_eliminar` AS eliminar
ON eliminar.`ID` = tr.`object_id`;
/* Eliminar configuración y metadatos de cupones */
DELETE pm
FROM `index_postmeta` AS pm
INNER JOIN `tmp_cupones_eliminar` AS eliminar
ON eliminar.`ID` = pm.`post_id`;
/* Eliminar cupones y revisiones */
DELETE p
FROM `index_posts` AS p
INNER JOIN `tmp_cupones_eliminar` AS eliminar
ON eliminar.`ID` = p.`ID`;
/* Eliminar tablas temporales */
DROP TEMPORARY TABLE IF EXISTS `tmp_cupones_eliminar`;
DROP TEMPORARY TABLE IF EXISTS `tmp_cupones`;
COMMIT;
--------------------
eliminar clientes
USE `openlor_2342es`;
START TRANSACTION;
/* =========================================================
1. IDENTIFICAR ADMINISTRADORES
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_admin_ids`;
CREATE TEMPORARY TABLE `tmp_admin_ids` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_admin_ids` (`ID`)
SELECT DISTINCT u.`ID`
FROM `index_users` AS u
INNER JOIN `index_usermeta` AS um
ON um.`user_id` = u.`ID`
WHERE um.`meta_key` = 'index_capabilities'
AND um.`meta_value` LIKE '%"administrator"%';
/* Confirmar que openlor_3523 es administrador */
SET @admin_principal = (
SELECT u.`ID`
FROM `index_users` AS u
INNER JOIN `tmp_admin_ids` AS admin
ON admin.`ID` = u.`ID`
WHERE u.`user_login` = 'openlor_3523'
LIMIT 1
);
SET @permitir_borrado =
IF(@admin_principal IS NULL, 0, 1);
SELECT
@admin_principal AS admin_reasignacion,
@permitir_borrado AS borrado_autorizado;
/* =========================================================
2. IDENTIFICAR USUARIOS NO ADMINISTRADORES
========================================================= */
DROP TEMPORARY TABLE IF EXISTS `tmp_clientes_eliminar`;
CREATE TEMPORARY TABLE `tmp_clientes_eliminar` (
`ID` BIGINT UNSIGNED NOT NULL PRIMARY KEY
);
INSERT IGNORE INTO `tmp_clientes_eliminar` (`ID`)
SELECT u.`ID`
FROM `index_users` AS u
LEFT JOIN `tmp_admin_ids` AS admin
ON admin.`ID` = u.`ID`
WHERE admin.`ID` IS NULL
AND @permitir_borrado = 1;
/* Mostrar cantidad seleccionada */
SELECT COUNT(*) AS usuarios_a_eliminar
FROM `tmp_clientes_eliminar`;
/* =========================================================
3. REASIGNAR PÁGINAS Y CONTENIDOS
========================================================= */
UPDATE `index_posts` AS contenido
INNER JOIN `tmp_clientes_eliminar` AS usuario
ON usuario.`ID` = contenido.`post_author`
SET contenido.`post_author` = @admin_principal
WHERE @permitir_borrado = 1;
/* =========================================================
4. BORRAR COMENTARIOS DE ESOS USUARIOS
========================================================= */
DELETE cm
FROM `index_commentmeta` AS cm
INNER JOIN `index_comments` AS comentario
ON comentario.`comment_ID` = cm.`comment_id`
INNER JOIN `tmp_clientes_eliminar` AS usuario
ON usuario.`ID` = comentario.`user_id`
WHERE @permitir_borrado = 1;
DELETE comentario
FROM `index_comments` AS comentario
INNER JOIN `tmp_clientes_eliminar` AS usuario
ON usuario.`ID` = comentario.`user_id`
WHERE @permitir_borrado = 1;
/* =========================================================
5. BORRAR METADATOS DE USUARIOS
Direcciones, preferencias, roles, carritos, etc.
========================================================= */
DELETE meta
FROM `index_usermeta` AS meta
INNER JOIN `tmp_clientes_eliminar` AS usuario
ON usuario.`ID` = meta.`user_id`
WHERE @permitir_borrado = 1;
/* =========================================================
6. BORRAR CUENTAS NO ADMINISTRADORAS
========================================================= */
DELETE usuario
FROM `index_users` AS usuario
INNER JOIN `tmp_clientes_eliminar` AS eliminar
ON eliminar.`ID` = usuario.`ID`
WHERE @permitir_borrado = 1;
/* =========================================================
7. LIMPIAR DATOS COMERCIALES DE LOS ADMINISTRADORES
Conserva sus cuentas, contraseña y permisos
========================================================= */
DELETE meta
FROM `index_usermeta` AS meta
INNER JOIN `tmp_admin_ids` AS admin
ON admin.`ID` = meta.`user_id`
WHERE @permitir_borrado = 1
AND (
meta.`meta_key` LIKE 'billing\_%'
OR meta.`meta_key` LIKE 'shipping\_%'
OR meta.`meta_key` LIKE '_woocommerce_persistent_cart\_%'
OR meta.`meta_key` IN (
'paying_customer',
'wc_last_active'
)
);
DROP TEMPORARY TABLE IF EXISTS `tmp_clientes_eliminar`;
DROP TEMPORARY TABLE IF EXISTS `tmp_admin_ids`;
COMMIT;
----------------
DELETE FROM `index_woocommerce_payment_tokenmeta`;
DELETE FROM `index_woocommerce_payment_tokens`;
DELETE FROM `index_woocommerce_downloadable_product_permissions`;
DELETE FROM `index_wc_download_log`;
DELETE FROM `index_woocommerce_sessions`;
DELETE FROM `index_wc_customer_lookup`;
DELETE FROM `index_wc_reserved_stock`;
----
DELETE api
FROM `index_woocommerce_api_keys` AS api
LEFT JOIN `index_users` AS usuario
ON usuario.`ID` = api.`user_id`
WHERE usuario.`ID` IS NULL;
-------
UPDATE `index_users`
SET
`user_login` = 'openlor_3523',
`user_nicename` = 'openlor-3523',
`user_email` = 'tienda@openlor.es',
`display_name` = 'Openlor',
`user_url` = 'https://openlor.es'
WHERE `user_login` = 'essenzanatura_us';
_____