[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"seo-verification":3,"blog-preproduccion-wordpress-de-cliente-montarla-y-probar-antes-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-preproduccion-wordpress-de-cliente-montarla-y-probar-antes-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":160,"ctaBody":161,"ctaButton":162,"ctaUrl":163,"relatedPosts":164},545,"preproduccion-wordpress-de-cliente-montarla-y-probar-antes",{"fr":12,"en":13,"ar":14,"es":10},"environnement-preproduction-wordpress-client-agence","wordpress-client-staging-build-it-test-updates-then-deploy","بيئة-تجريبية-لموقع-ووردبريس-لعميل-أنشئها-واختبر-قبل-الإنتاج","Preproducción WordPress de cliente: montarla y probar antes","Subdominio aislado, base clonada, noindex y contraseña: monte la preproducción de un WordPress de cliente, pruebe las actualizaciones y páselas a producción.",12,0,false,"2026-10-31T00:00:00+00:00","2026-10-31T19:07:30+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fenvironnement-preproduction-wordpress-client-agence-poster.svg",{"categorySlug":33,"appSlug":34},"cms-sitios-web","wordpress","Una actualización del núcleo o de un plugin se juega en segundos y a veces se paga en horas, delante de un cliente que vende en línea. Aun así, una preproducción mal aislada es peor que ninguna: se indexa, envía correos reales a los clientes del sitio o pisa las URL de producción al volver. Esta guía monta paso a paso una copia segura de un sitio WordPress de cliente, prueba las actualizaciones una a una, lee los errores en `debug.log` y traslada los cambios a producción sin pisar la base de datos real y con una vuelta atrás lista.",[37,41,51,54,88,91,94,104,107,110,118,150,153,157],{"type":38,"title":39,"body":40},"h2","Por qué una preproducción y no probar en el sitio en línea","Un plugin de formularios que ya no se inicia, un tema que pierde su maquetación, la pantalla «Ha habido un error crítico en este sitio»: estos fallos llegan tras una actualización que parecía inofensiva. Con tres sitios que gestionar, basta la prudencia. Con treinta, se actualiza a ciegas o se deja de actualizar, y entonces lo que cuesta es la vulnerabilidad sin corregir.\n\nUna preproducción es una copia viva del sitio, en una dirección distinta, con su propia base de datos. Se puede romper lo que se quiera, leer los errores, corregir y luego repetir en producción el paso ya validado. No sustituye a la copia de seguridad: hace que rara vez haga falta usarla.",{"type":42,"title":43,"items":44},"ul","Lo que le aporta la preproducción",[45,46,47,48,49,50],"**Actualizaciones sin sorpresas** — cada cambio de núcleo, tema o plugin se ve en pantalla antes de llegar a los visitantes.","**Un diagnóstico legible** — los errores van a un registro, no delante del cliente, y la causa se encuentra antes de que llame.","**Una revisión compartida** — el cliente o su jefe de proyecto valida en una dirección aparte, sin tocar el sitio público.","**Un diario de cambios** — anota la versión anterior y la nueva de cada plugin, y repite exactamente lo mismo en producción.","**Un ensayo de novedades** — tema nuevo, constructor de páginas nuevo, módulo de pago nuevo: todo se juzga sobre una copia.","**Una vuelta atrás preparada** — la copia de seguridad se hace y se comprueba antes de la prueba, no después del incidente.",{"type":38,"title":52,"body":53},"Requisitos con cifras antes de copiar","Cuente tres veces el tamaño del sitio en línea en espacio de disco: el sitio, su copia y la exportación de la base. Mida `wp-content` con `du -sh wp-content` y la base en phpMyAdmin o con `wp db size`. Prevea un subdominio por cliente, por ejemplo `staging.your-domain.com`, y la misma versión de PHP que producción: una preproducción con un PHP más reciente valida una configuración que no es la del cliente. Esa versión se lee en Herramientas › Salud del sitio › Información, y las versiones aún soportadas se mantienen al día en php.net\u002Fsupported-versions.php.\n\nHace falta además un terminal con `wp-cli` (SSH en una cuenta que lo permita, o un VPS). Esta guía describe la copia manual, primero los archivos y luego la base, que muestra exactamente qué se copia. Si WP Toolkit está disponible en su cuenta, su clonado produce esa copia por usted (consulte la guía «Instalar WordPress desde cPanel»); el resto de la guía (noindex, autenticación, correos cortados, pruebas) se aplica entonces igual. Para instalar un sitio nuevo desde cPanel, consulte la guía dedicada.",{"type":55,"title":56,"steps":57},"steps","Montar la preproducción, paso a paso",[58,61,64,67,70,73,76,79,82,85],{"title":59,"body":60},"Hacer copia de seguridad de producción antes de escribir nada","Desde la carpeta del sitio en línea:\n`mkdir -p ~\u002Fpreprod-backups`\n`wp db export ~\u002Fpreprod-backups\u002Fbefore-staging.sql --single-transaction`\n`tar -czf ~\u002Fpreprod-backups\u002Ffiles-before-staging.tar.gz -C ~\u002Fpublic_html .`\nCompruebe que ambos archivos existen y no están vacíos con `ls -lh ~\u002Fpreprod-backups`. Las copias de seguridad del plan no eximen de este gesto: su frecuencia depende del plan, así que pueden tener varios días.",{"title":62,"body":63},"Crear el subdominio y su carpeta","Cree `staging.your-domain.com` en cPanel (la guía «Crear un subdominio en cPanel» detalla la pantalla) con una carpeta raíz propia, preferiblemente fuera de `public_html`, por ejemplo `~\u002Fstaging.your-domain.com`. Una carpeta dentro de `public_html` también sería accesible desde una dirección del sitio en línea. Espere a que se emita el certificado TLS del subdominio antes de probar.",{"title":65,"body":66},"Copiar los archivos","`rsync -a --exclude='wp-content\u002Fcache\u002F' ~\u002Fpublic_html\u002F ~\u002Fstaging.your-domain.com\u002F`\nAdapte la ruta de origen a la carpeta raíz del sitio del cliente. Sin terminal, el administrador de archivos de cPanel permite comprimir la carpeta, moverla y extraerla en la carpeta del subdominio.",{"title":68,"body":69},"Crear una base y un usuario dedicados","En la sección de bases de datos MySQL de cPanel, cree una base nueva y un usuario, y concédale todos los privilegios solo sobre esa base. Luego abra el `wp-config.php` de la copia y cambie `DB_NAME`, `DB_USER` y `DB_PASSWORD`. Es el error más caro de esta guía: copiar `wp-config.php` sin modificar esas tres líneas hace que la preproducción escriba en la base de producción.",{"title":71,"body":72},"Importar la base","Desde la carpeta de la copia:\n`cd ~\u002Fstaging.your-domain.com`\n`wp db import ~\u002Fpreprod-backups\u002Fbefore-staging.sql`\n`wp option get siteurl`\nLa última orden debe mostrar todavía la dirección de producción: es normal, las URL aún no se han reemplazado. Si falla, `wp-config.php` sigue apuntando a la base equivocada.",{"title":74,"body":75},"Reemplazar las URL, primero en seco","`wp search-replace 'https:\u002F\u002Fyour-domain.com' 'https:\u002F\u002Fstaging.your-domain.com' --all-tables --skip-columns=guid --dry-run`\nLea el informe: enumera las tablas y el número de reemplazos. Después repita la misma orden sin `--dry-run`. WordPress guarda muchos ajustes como datos serializados, donde cada cadena lleva su longitud: un `sed` sobre la exportación cambia la longitud de la URL sin corregir esa cuenta, y los ajustes quedan ilegibles. `wp search-replace` entiende esos datos y los reescribe correctamente.",{"title":77,"body":78},"Fijar los ajustes de preproducción en wp-config.php","Añada, encima de la línea «That's all, stop editing»:\n`define('WP_ENVIRONMENT_TYPE', 'staging');`\n`define('DISABLE_WP_CRON', true);`\n`define('DISALLOW_FILE_EDIT', true);`\n`define('WP_DEBUG', true);`\n`define('WP_DEBUG_LOG', true);`\n`define('WP_DEBUG_DISPLAY', false);`\nLos errores van a `wp-content\u002Fdebug.log` sin mostrarse a los visitantes. `WP_ENVIRONMENT_TYPE` existe desde WordPress 5.5 y admite `local`, `development`, `staging` y `production`: permite que temas y plugins se adapten, pero no oculta el sitio a los buscadores, de ahí el paso siguiente.",{"title":80,"body":81},"Cerrar el acceso y pedir el noindex","En Ajustes › Lectura, marque «Disuadir a los motores de búsqueda de indexar este sitio», o desde la línea de comandos: `wp option update blog_public 0`. Añada después autenticación HTTP a la carpeta de la copia: un archivo `.htpasswd` creado con `htpasswd -c ~\u002F.htpasswd-staging client`, y en el `.htaccess` de la carpeta las directivas `AuthType Basic`, `AuthName \"Preproduction\"`, `AuthUserFile` apuntando a ese archivo y `Require valid-user`. En su defecto, limite el acceso a una lista de IP.",{"title":83,"body":84},"Comprobar la copia como lo haría un robot","`curl -sI https:\u002F\u002Fstaging.your-domain.com\u002F`\nLa respuesta debe ser un `401`. Después, con las credenciales:\n`curl -s -u client https:\u002F\u002Fstaging.your-domain.com\u002F | grep -i robots`\nDebe verse una etiqueta `meta name='robots'` que contenga `noindex`. Si un plugin de caché o de SEO la sustituye, es ese el que hay que configurar. Por último, compruebe que el tema no contiene ninguna dirección de producción escrita a mano: `grep -r \"https:\u002F\u002Fyour-domain.com\" wp-content\u002Fthemes`.",{"title":86,"body":87},"Integrar la preproducción en su rutina de agencia","Convierta este montaje en una plantilla: un subdominio por cliente, en la cuenta cPanel del cliente, con la misma lista de comprobación. El orden de las operaciones para trasladar un sitio a otro alojamiento lo cubre la guía «Migrar un sitio WordPress de cliente sin cortes»; la preproducción descrita aquí es una herramienta duradera, no un paso de la migración.",{"type":38,"title":89,"body":90},"Aislar de verdad: el noindex no basta","El noindex pide a los buscadores que no conserven una página; no impide que nadie la lea. Una preproducción abierta a todos acaba en un enlace pegado en un ticket, en un mapa del sitio o en una captura de pantalla, y entonces publica contenido duplicado de producción. Las dos protecciones se complementan: el noindex indica a los buscadores que no indexen, y la autenticación HTTP o la lista de IP prohíbe el acceso.\n\nUna trampa: si bloquea el subdominio con `robots.txt`, un robot ya no lee la página y por tanto nunca ve la etiqueta noindex. Con la autenticación en su sitio, ese archivo no sirve de nada.",{"type":38,"title":92,"body":93},"Neutralizar correos, pagos y tareas programadas","La copia contiene a los clientes reales del sitio: suscriptores, compradores, direcciones de pedidos. Todo lo que se envía solo debe cortarse antes de la menor prueba; de lo contrario, un recordatorio de carrito, un aviso de cita o una renovación de suscripción sale por duplicado desde la copia. Las tareas programadas de WordPress se disparan con las visitas: en preproducción, desactívelas con `DISABLE_WP_CRON` y ejecútelas a mano con `wp cron event run --due-now` cuando quiera probarlas.",{"type":42,"title":95,"items":96},"Lista de comprobación antes de tocar un solo plugin",[97,98,99,100,101,102,103],"**Correos** — plugin de envío en modo de prueba o redirigido a un buzón de revisión, notificaciones de la tienda desactivadas.","**Pagos** — pasarela en modo de prueba, claves de producción retiradas de la copia, direcciones de retorno (webhooks) no declaradas para la preproducción.","**Tareas programadas** — `DISABLE_WP_CRON` definido, eventos pendientes listados con `wp cron event list`.","**Edición de archivos** — `DISALLOW_FILE_EDIT` activo para no editar el código desde la administración.","**Registro de errores** — `WP_DEBUG_LOG` activo y `WP_DEBUG_DISPLAY` en `false`.","**Integraciones de terceros** — CRM, directorios, herramientas de estadísticas y claves de API de producción sustituidos o retirados.","**Buscadores** — noindex fijado y autenticación en su sitio, comprobados con `curl` como arriba.",{"type":38,"title":105,"body":106},"Probar las actualizaciones, una a una","Liste lo que espera actualización con `wp plugin list --update=available`. Actualice después un plugin cada vez: `wp plugin update nombre-plugin`, recorra las páginas que importan (inicio, formulario de contacto, carrito, inicio de sesión) y lea el final del registro con `tail -n 30 wp-content\u002Fdebug.log`. Pase al siguiente solo cuando el registro esté en calma. Haga lo mismo con el tema mediante `wp theme update nombre-tema` y luego con el núcleo mediante `wp core update`.\n\nAnote en un diario de cambios, para cada línea, la versión anterior y la nueva. Esa es la lista que repetirá en producción, versión por versión, en lugar de copiar nada.",{"type":38,"title":108,"body":109},"Cuando la actualización rompe: leer debug.log","El síntoma clásico es la pantalla «Ha habido un error crítico en este sitio». WordPress entra entonces en modo de recuperación y envía un enlace a la dirección de administración, lo que supone que el envío de correos funciona: en preproducción está neutralizado, así que no lo espere. La causa está en el registro: `tail -n 40 wp-content\u002Fdebug.log`. Busque la última línea que empiece por `PHP Fatal error`, del tipo `Call to undefined function` o `Cannot declare class`, y anote la ruta del archivo: la carpeta bajo `wp-content\u002Fplugins\u002F` señala el plugin culpable. Desactívelo sin pasar por la administración con `wp plugin deactivate nombre-plugin`, y el sitio vuelve y usted sabe a quién señalar.",{"type":42,"title":111,"items":112},"Solución de problemas: los otros síntomas que sí aparecen",[113,114,115,116,117],"**El sitio redirige a producción** — `wp option get siteurl` y `wp option get home` muestran aún la dirección antigua, o un constructor de páginas conserva URL escritas a mano; repita el reemplazo, con `--precise` si hace falta.","**«Error al establecer una conexión con la base de datos»** — `DB_NAME`, `DB_USER`, `DB_PASSWORD` o `DB_HOST` de la copia son incorrectos, o el usuario no tiene derechos sobre la base nueva.","**Imágenes o estilos cargados desde producción** — las URL escapadas, como `https:\\\u002F\\\u002F` en los datos JSON de los constructores, escaparon al reemplazo; repítalo con esa forma.","**Bucle de inicio de sesión o cierre inmediato** — las cookies pertenecen al dominio antiguo; bórrelas y compruebe `siteurl` y `home`.","**La preproducción aparece en un buscador** — el noindex se fijó demasiado tarde o un plugin lo sustituye; pase a la autenticación HTTP y solicite la retirada de la dirección.",{"type":119,"title":120,"headers":121,"rows":125},"comparison","Archivos o base: qué se traslada y cómo",[122,123,124],"Elemento","Dónde vive","Cómo trasladarlo a producción",[126,130,133,136,139,143,147],[127,128,129],"Tema y tema hijo","Archivos","Desplegar la carpeta validada, o repetir `wp theme update` a la versión probada",[131,128,132],"Plugins","Repetir `wp plugin update nombre-plugin --version=X` con la versión probada",[134,128,135],"Plugins de uso obligatorio (mu-plugins)","Copiar el archivo validado, guardando el antiguo al lado",[137,128,138],"Medios subidos (uploads)","No empujar nunca de preproducción a producción: producción sigue recibiendo medios nuevos",[140,141,142],"Ajustes de plugins","Base (opciones)","Rehacer el ajuste a mano en producción, o `wp option update`, nombrando la opción",[144,145,146],"Pedidos, formularios, cuentas, comentarios","Base","No pisar nunca: estos datos viven en producción",[148,145,149],"Tablas creadas por una actualización","Dejar que el plugin las cree repitiendo la actualización en producción",{"type":38,"title":151,"body":152},"Pasar a producción y poder volver atrás","En un sitio transaccional, no importe nunca la base de preproducción en producción: durante sus pruebas llegaron en línea pedidos, altas y entradas de formulario, y una importación los borra. Repita en su lugar los cambios validados. Secuencia: copia de seguridad reciente (`wp db export` y archivo de los ficheros, como en el paso 1), `wp maintenance-mode activate`, actualizaciones en orden y a las versiones del diario, revisión de las páginas clave y luego `wp maintenance-mode deactivate`.\n\nPara volver atrás, restaure primero los archivos: `wp plugin install nombre-plugin --version=anterior --force` o el archivo del paso 1. Restaure la base solo como último recurso, y solo si la actualización modificó tablas: se perdería todo lo entrado desde la copia, así que la exportación debe tener solo unos minutos. Conserve la copia hasta que el cliente haya aprobado el sitio en línea.",{"type":154,"title":155,"body":156},"tip","El reflejo de endurecimiento","Cuando la actualización esté validada, elimine la copia de la base de producción que queda en `~\u002Fpreprod-backups` y en la preproducción: una exportación completa contiene direcciones, pedidos y hashes de contraseñas de los clientes. No deje nunca `WP_DEBUG` activo en el sitio en línea, el registro puede contener rutas y consultas.",{"type":38,"title":158,"body":159},"Una rutina que aguanta a escala de cartera","Una preproducción se juzga por su disciplina: siempre el mismo montaje, la misma lista de comprobación, el mismo diario. Para una agencia, la rutina cabe en una plantilla de procedimiento: un subdominio por cliente, una base dedicada, noindex más autenticación, correos cortados, actualizaciones una a una, despliegue por repetición. Funciona tanto mejor cuanto cada sitio de cliente vive en su propia cuenta, con sus copias de seguridad y accesos separados.","Una preproducción por cliente, en una infraestructura aislada","Cada sitio de cliente gana al vivir en su propia cuenta cPanel: subdominio de preproducción, copias de seguridad según el plan y accesos separados, todo desde una sola oferta de revendedor y un único espacio de agencia, con su marca. Usted conserva la relación con el cliente; la infraestructura bajo cada sitio es nuestra.","Descubrir el espacio de agencia","\u002Fsolutions\u002Fagences",[165,182,201],{"id":166,"slug":167,"slugs":168,"title":172,"excerpt":173,"readTime":174,"views":18,"isPinned":19,"publishedAt":175,"updatedAt":176,"category":177,"categories":178,"featuredImage":29,"bgImage":30,"posterImage":180,"relatedSolution":181},538,"migrar-sitio-wordpress-cliente-nuevo-hosting-sin-cortes",{"fr":169,"en":170,"ar":171,"es":167},"migrer-site-wordpress-client-nouvel-hebergeur-sans-coupure","migrate-client-wordpress-site-new-host-no-downtime","نقل-موقع-ووردبريس-عميل-استضافة-جديدة-دون-توقف","Migrar un WordPress de cliente sin cortes: el método","Copia, prueba con el archivo hosts antes del DNS, congelación de escrituras, search-replace, cambio y vuelta atrás: el método para mover un WordPress.",11,"2026-10-30T00:00:00+00:00","2026-10-31T01:54:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[179],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fmigrer-site-wordpress-client-nouvel-hebergeur-sans-coupure-poster.svg",{"categorySlug":33,"appSlug":34},{"id":183,"slug":184,"slugs":185,"title":189,"excerpt":190,"readTime":191,"views":18,"isPinned":19,"publishedAt":192,"updatedAt":193,"category":194,"categories":198,"featuredImage":29,"bgImage":30,"posterImage":200,"relatedSolution":29},469,"instalar-wordpress-wp-toolkit-cpanel",{"fr":186,"en":187,"ar":188,"es":184},"installer-wordpress-wp-toolkit-cpanel","install-wordpress-wp-toolkit-cpanel","تثبيت-ووردبريس-باستخدام-wp-toolkit-في-cpanel","Instalar WordPress desde cPanel","Instale WordPress en pocos minutos desde cPanel: Sitios web y aplicaciones, Gestionar, Crear con WordPress y, después, Lanzar mi sitio web.",4,"2026-10-19T00:00:00+00:00","2026-10-20T07:26:24+00:00",{"id":17,"name":195,"slug":196,"color":197,"icon":196},"Guías","guides","bg-emerald-500\u002F10 text-emerald-400",[199],{"id":17,"name":195,"slug":196,"color":197,"icon":196},"\u002Fblog\u002Fcovers\u002Finstaller-wordpress-wp-toolkit-cpanel-poster.svg",{"id":202,"slug":203,"slugs":204,"title":208,"excerpt":209,"readTime":210,"views":211,"isPinned":19,"publishedAt":192,"updatedAt":212,"category":213,"categories":214,"featuredImage":29,"bgImage":30,"posterImage":216,"relatedSolution":29},474,"crear-subdominio-cpanel",{"fr":205,"en":206,"ar":207,"es":203},"creer-sous-domaine-cpanel","create-subdomain-cpanel","إنشاء-نطاق-فرعي-في-cpanel","Crear un subdominio en cPanel","Cree un subdominio como blog.yourdomain.com en cPanel, elija su carpeta y apunte su DNS, tanto en la interfaz Meridian como en Jupiter.",5,1,"2026-10-20T20:26:34+00:00",{"id":17,"name":195,"slug":196,"color":197,"icon":196},[215],{"id":17,"name":195,"slug":196,"color":197,"icon":196},"\u002Fblog\u002Fcovers\u002Fcreer-sous-domaine-cpanel-poster.svg",1793480477105]