WP Manifestindependent plugin directory
manifest / updates / studio-sync-sh

Studio Sync Self-Hosted

Professional file and database sync between WordPress Studio (local) and self-hosted servers

★ 0stars

Install

Download source zip No release zip yet

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/rosamajira-cell/studio-sync-sh/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Studio Sync Self-Hosted (studio-sync-sh)

Plugin de WordPress para sincronizar archivos y base de datos de manera profesional, bidireccional y autónoma entre WordPress Studio (entorno local en el ordenador del desarrollador) y servidores WordPress self-hosted (staging o producción).

Replicando fielmente el flujo y la experiencia de usuario de WordPress Studio Sync, pero sin intermediarios ni dependencias de WordPress.com, Jetpack, Pressable o VaultPress.


🚀 Características Principales

  • Conexión Criptográfica Segura: Handshake con tokens efímeros de un solo uso y autenticación mediante firmas digitales HMAC-SHA256 en cada petición REST.
  • Protección Anti-Replay y Skew: Control estricto de nonces únicos y verificación de desfase temporal (reloj de servidor).
  • Sincronización Selectiva o Total:
    • Árbol jerárquico interactivo de wp-content/.
    • Selección individual de Plugins, Temas, Subidas (Uploads por año/mes) y Must-Use Plugins.
  • Soporte .deployignore: Respeta reglas tipo .gitignore en la raíz del sitio, además de exclusiones fijas de seguridad (.git, node_modules, cache, debug.log, backups y temporales).
  • Base de Datos y Search & Replace Preciso:
    • Volcado SQL rápido (vía mysqldump CLI con fallback automático a streaming PHP por lotes).
    • Search & Replace recursivo que recalcula con precisión longitudes de strings serializados de PHP (s:XX:"...") y JSON, preservando la integridad de los datos.
    • Opciones de exclusión de tablas (pedidos WooCommerce, transitorios, logs, colas de Action Scheduler) y opción para preservar usuarios del destino.
  • Transferencia por Lotes (Chunked Streaming): Paquetes divididos en bloques de 20 a 50 MB con validación de checksum SHA-256 para prevenir caídas por límites de memoria o tiempo de ejecución.
  • Copias de Seguridad Automáticas y Rollback: Snapshot previo en el destino antes de cualquier modificación. Si ocurre cualquier fallo, se revierte automáticamente el sitio a su estado anterior.
  • Panel WP-Admin en Español: Interfaz moderna, clara y pulida con avisos de peligro en rojo solo ante reemplazos de base de datos y consola de progreso en tiempo real.

📋 Requisitos del Sistema

  • PHP: 8.1 o superior (con extensiones curl, zip, openssl, json, mbstring).
  • WordPress: 6.5 o superior.
  • Permisos: Usuario con perfil de Administrador (manage_options).

📦 Instalación

  1. Descarga o clona la carpeta studio-sync-sh dentro del directorio wp-content/plugins/ de ambos sitios:
    • En tu WordPress local (WordPress Studio).
    • En tu WordPress remoto (servidor Staging o Producción).
  2. En ambos paneles de administración, ve a Plugins → Plugins instalados y activa Studio Sync Self-Hosted.
  3. Verás un nuevo menú lateral llamado Studio Sync.

🔗 Guía de Conexión (Handshake)

Paso 1: En el Servidor Remoto (Destino/Staging/Producción)

  1. Ve a Studio Sync → Conexiones.
  2. En la tarjeta Generar Token para este Sitio, haz clic en "Generar Nuevo Token de Conexión".
  3. Copia la URL del sitio y el Token de conexión (comienza por stk_...). Este token es de un solo uso y caduca en 15 minutos.

Paso 2: En tu WordPress Local (WordPress Studio)

  1. Ve a Studio Sync → Conexiones.
  2. En Conectar a un Sitio Remoto, pega la URL del servidor y el Token.
  3. Opcionalmente asigna un nombre (ej. "Servidor Staging" o "Producción").
  4. Haz clic en "Conectar Sitio".
  5. ¡Listo! Ambos extremos habrán intercambiado de forma segura su clave secreta compartida (shared_secret).

🔄 Cómo Sincronizar

1. PULL (Traer cambios desde el Servidor Remoto hacia Local)

  1. En tu WordPress local, ve a Studio Sync → Sincronizar.
  2. Haz clic en el botón "Iniciar Pull...".
  3. En el modal de configuración:
    • Selecciona si deseas "Todos los archivos" o "Archivos específicos" (marcando los plugins, temas o uploads que necesites).
    • Marca "Incluir base de datos" si deseas volcar y reemplazar la base de datos local con la del servidor remoto (las URLs se adaptarán automáticamente a tu entorno local).
  4. Haz clic en "Iniciar Sincronización".
  5. Observa la barra de progreso y la consola de logs en tiempo real.

2. PUSH (Enviar cambios locales hacia el Servidor Remoto)

  1. En tu WordPress local, ve a Studio Sync → Sincronizar.
  2. Haz clic en el botón "Iniciar Push...".
  3. Selecciona los componentes desarrollados (ej. un tema específico o un plugin).
  4. Si seleccionas "Incluir base de datos", el sistema mostrará un aviso de seguridad y requerirá confirmación explícita para evitar sobrescrituras accidentales en producción.
  5. El servidor remoto creará una copia de seguridad previa de forma automática antes de aplicar los cambios.

🛡️ Backups y Restauración (Rollback)

  • Antes de aplicar cualquier cambio en destino, Studio Sync genera un snapshot en wp-content/studio-sync-sh-backups/{job_id}/.
  • Reversión Automática: Si la transferencia o importación falla en cualquier paso, el sistema ejecuta un rollback inmediato restaurando los archivos y la base de datos originales.
  • Restauración Manual: Ve a la pestaña Backups en cualquier momento y haz clic en "Restaurar" en cualquiera de las copias guardadas.

🧪 Pruebas Automatizadas

El plugin incluye una suite completa de pruebas unitarias para validar HMAC, .deployignore, Search & Replace y manejo de tokens:

php tests/run_tests.php

📄 Licencia

Este plugin está bajo licencia GPL v2 o posterior.