
Como desarrollador, me gustan las herramientas simples que realizan un cierto conjunto de tareas muy bien y luego salen del camino.Utilizo herramientas como MAMP, WP-CLI, Primer y GIT, así como utilidades simples en la línea de comandos como Z, Tail y Rsync todos los días y hago bien su trabajo.El único problema es que generalmente solo rasca la superficie de lo que muchas de estas herramientas pueden hacer;Los presenté a mi flujo de trabajo y no me cansé de profundizar y realmente descubrí el potencial que tienen para ofrecer.Sé que son sesgados, pero creo que WP Migra DB Pro también es una de esas herramientas indispensables y, para muchos desarrolladores, solo podría tener un potencial sin explotar.Entonces, pongamos nuestros sombreros de hackers y exploremos más allá de la interfaz de uso, que puede hacer WP Migra DB Pro cuando nos volvemos creativos.
La magia que cambia la vida de conectarte dice lo que quieres sobre los códigos de WordPress, pero creo que todos podemos estar de acuerdo en que el sistema de gancho de WordPress es algo agradable. WP Migrate DB Pro utiliza ganchos a gran escala tanto para uso interno como para permitir la extensibilidad y la personalización. Creamos un práctico ajustes de complementos que documentan la mayoría de nuestros ganchos disponibles, pero me gustaría presentar algunos ejemplos específicos aquí. WPMDB_EXCLUDE_RESED_MEDIA Primero es el filtro WPMDB_EXCLUDE_RESED_MEDIA que, si no ha adivinado, le permitirá renunciar a la migración del archivo de medios de cambio de tamaño al usar el archivo de medios. Hay varias razones por las que es posible que desee hacer. Tal vez haya desarrollado un tema y probado muchos tamaños diferentes, dejando mucho en su carpeta de medios. Tal vez vayas a un nuevo tema y planeas regenerar todo el tamaño de la imagen de todos modos. O tal vez simplemente no quiera usar todo el ancho de banda adicional. Por ejemplo, aquí trato de presionar un sitio con solo unos 100 archivos multimedia, pero con las dimensiones generadas automáticamente, es decir, casi 800 archivos reales que se migrarán.
En lugar de migrar todos estos archivos, agregaré lo siguiente a un complemento obligatorio instalado en ambos sitios involucrados en la migración (porque la comparación de medios requiere consenso de ambos sitios): add_filter (‘wpmdb_exclude_resed_media’, ‘__turn_true’); Debido a la función de ayuda de WordPress __return_true, esta línea es todo lo que es necesario para devolver el verdadero para el filtro wpmdb_exclude_resed_media y, debido a que está en un complemento obligatorio, no debo activarlo. La ejecución de la migración muestra nuevamente que solo se migran los originales: ¡ahora solo puedo ejecutar un enchufe de regeneración en miniatura en mi sitio de destino y recibir todas las imágenes durante aproximadamente la mitad del ancho de banda! Tenga en cuenta que la regeneración en miniatura puede ser una tarea bastante difícil y puede tener problemas en un servidor mal alimentado si tiene muchas imágenes. Wpmdb_migration_complete Sabes lo que dices ahora: “¿Quieres ir al control remoto y entregar el botón de regeneración de los medios manualmente? ¿Es esta era mesolítica? Me disculpo. El signo de un buen desarrollador es una inclinación extrema para la pereza y claramente no se puede esperar que inicie manualmente los medios cuando pueda automatizar el proceso. Afortunadamente, ¡tenemos una acción para ello!

La acción de wpmdb_migration_complete se activará en ambos sitios involucrados en una migración cuando adivinó!, La migración se completa. Entonces, continuando con el ejemplo anterior (suponiendo que tengamos instalado WP-CLI y el host permite el uso de Exec), podemos iniciar una regeneración de medios agregando lo siguiente a un complemento que se utilizará en el sitio de destino: add_action (‘wpmdb_migration_complete ‘,’ regen_media_migration_complete ‘, 2, 20); función regen_media_migration_complete ($ acción, $ url) {$ wp = “/parche/a/wp”; // ruta completa al comando wp-cli global $ wp_current_filter; $ is_remote = strstr ($ wp_current_filter [0], ‘NOPRIV’)? VERDADERO FALSO; if ((‘push’ == $ action && $ is_remote) || (‘Pull’ == $ Action &&! Null & “); }} Si todo va bien, esto ejecutará el comando de regeneración de medios del wp-cli en un fondo (gracias a toda la estupidez /dev /nulo) y si le da unos minutos, nunca sabrá que las dimensiones no fueron . migrat.

Nota secundaria: si tiene problemas para trabajar y usar algo como MAMP, la función PHP Exec se puede ejecutar en un entorno muy diferente de su shell estándar. Puede superar esto ejecutando directamente un script de shell en lugar del comando wp-cli. En el shell de su script, puede elegir ejecutar el shell que normalmente ejecuta e incluso obtener su archivo.*RC si establece el PHP y WP correctos. Yo uso ZSH, para que mi script de shell se vería así: #!/Bin/zsh fuente /users/me/.zshrc wp medios regenerado — sí — ruta/a/wordpress más trucos wpmdb_migration_complete use wpmdb_migration_complement regeneration es es Un ejemplo algo específico, entonces, ¿qué pasa con algo más útil en general? A veces desea saber cuándo se ha completado una migración sin tener que rastrear cómo se ejecutan, así que veamos si podemos implementar una notificación de escritorio simple que se activará cuando se complete una migración.
Podemos usar la API de notificación de JavaScript para mostrar notificaciones y la API de WordPress Heartbeat para enviar el mensaje al front-end que la migración ha terminado. Si no está familiarizado con la API de WordPress Heartbeat, le recomiendo que consulte este tutorial de Pippinssplins.com, porque a partir de ahí extraí la mayor parte del código Heartbeat. Primero podemos usar el ladrón wpmdb_migration_complete para establecer una transición que dice que recientemente se ha completado una migración: add_action (‘wpmdb_migration_complete’, ‘jg_set_complete_transient’, 2, 20); función jg_set_complete_transient ($ acción, $ url) {global $ wp_current_filter; $ is_remote = strstr ($ wp_current_filter [0], ‘NOPRIV’)? VERDADERO FALSO; // solo establece transitorio en el sitio que ejecuta la migración si (! }} Debido a que el ritmo de la API del corazón se acelera después de unos minutos de inactividad, establecemos que el transitorio expire después de 500 segundos, que debería ser lo suficientemente largo como para ser tomado incluso por la marca más larga, pero lo suficientemente corto como para expirar entre las migraciones.
A continuación, tendremos que asegurarnos de que Heartbeat esté ejecutando y poniendo nuestro script en el sótano: Function JG_HeartBeat_enqueue ($ Hook) {// Haga que la parte JS de la API Heartbeat esté cargada. wp_enqueue_script (‘heartbeat’); add_action (‘admin_print_footer_scripts’, ‘jg_heartbeat_js’, 20); } add_action (‘admin_enqueue_scripts’, ‘jg_heartbeat_enqueue’); Luego, agregaremos nuestro script al sótano si los usuarios están en la página de DB Pro Migrate DB: function jg_heartbeat_js () {// Solo ejecuta latidos en la página de WP Migrat DB Pro Page if (! Isset ($ _get [‘Page’) | | $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _Get [‘Page’]! = ‘WP-Mixed-DB-Pro’) {Return ; }? <? Php} A continuación, agregaremos un código a ese bloque para asegurarnos de que el navegador acepte la API de notificación y solicitaremos permiso si lo hace: // No continúe no sea capaz si (! (" Notificación "en la ventana)) {return; } // Obtenga permiso si aún no se rolla si ('rallado'! } Después de eso, anunciaremos a la API Heartbeat que escuchamos, esto nos permitirá ejecutar un código en el Backynd que verifique si WPMDB_MIG_IS_COMPLETE Transitor solo se ha establecido cuando realmente escuchamos: // enganchar a Heartbeat-Send $ ( documento) .on ('HeartBeat-Send', function (e, date) {date ['wpmdb_mig_complete_heartbeat'] = 'check';}); Y luego comenzaremos a escuchar nuestra respuesta de Heartbeat y lanzaremos un aviso si lo recibimos:
// Liste para el evento personalizado "Heartbeat-Tick" en $ (documento). $ (documento) .on ('heartbeat-tick', function (e, date) {// return si no se establece if (! date ['wpmdb_mig_complete_heartbeat') {return;} // Notificación de fuego if ('grado' = = = == notificación.permiscion) {var notificación = nueva notificación ("wp migrate db pro migration!", {Cuerpo: 'Su migración se ha completado!', Icon: 'https://example.com/logo.png'}) ;}}); Ahora que hemos terminado con JS, solo tenemos que agregar el código para verificar si la migración se ha completado y para responder a sus propias solicitudes de latidos si tienen: add_filter ('heartbeat_received', 'jg_heartbeat_received', 10, 2); función jg_heartbeat_receivd ($ respuesta, $ date) {if ('check' == $ date ['wpmdb_mig_complete_heartbeat') {if (get_site_transient (wpmdb_mig_is_oma ')) {$ respuesta [' wpmdb_mig // Eliminar transitorio para asegurarnos de que solo enviemos esto solo delete_site_transient ('wpmdb_mig_is_complete'); }} Devolver $ respuesta; } ¡Ahora recibiremos notificaciones del escritorio después de completar la migración!
En realidad, la notificación puede tomar unos minutos después de que se haya completado una migración, porque la API del corazón se basa en el front-end que interroga los antecedentes para las actualizaciones, pero aún es bastante útil si ha eliminado la tabulación de la pantalla migración y necesitas un recordatorio. ¡Déjame volver al trabajo! Aquí está el código fuente completo del complemento que puede cambiar o instalar como está:

La revelación, a veces, cómo se configura un servidor puede evitar que la migración funcione bien: ya sea que las configuraciones de seguridad se activen por nuestras solicitudes, o la configuración que controlan la velocidad o las solicitudes permitidas no juegan bien con la forma en que WP migra los datos de transferencia DB Pro para solicitudes push. No me aburriré con las razones por las cuales empujar puede ser un poco más difícil de hacer que disparar, pero a menudo facilitará las cosas si solo puede revertir la migración para atraer a su destino en lugar de empujarlo. Si ambos sitios son accesibles públicamente, entonces este es un cambio fácil. Pero si intenta migrar a un sitio en vivo en un sitio de desarrollo local, entonces el tiroteo no es una opción … ¿o no? Ingrese NGROK-un pequeño comando/servicio que le permita crear túneles seguros de manera rápida y fácil a sus sitios alojados localmente. En general, NGROK es un poco difícil trabajar con WordPress, porque no reescribe la URL o el encabezado (como el módulo proxy Apache), por lo que debe usar URL relativas para hacer cualquier cosa para trabajar. Esto no es un problema para la migración de migración de la migración DB Pro, porque solo tenemos que acceder a la URL directa al archivo admin-ajax.php de su sitio, y WP migrat DB Pro obtiene información sobre una URL de un sitio remoto en la base de datos de la base de datos del sitio en lugar de deducirlo. de la URL de la conexión. ¡Vamos a empezar!
En primer lugar, querrá descargar Ngrok y abrir CLI donde sea que descargue el zip. Luego, querrá que no le guste, darles permisos de ejecución y moverlo a la carpeta /USR /bin para que pueda ejecutarlo desde cualquier lugar sin tener que especificar toda la ruta: $ CD /Usuarios /ME /Descargas $ Unzip Ngrok- stable-dedin-amd64.zip #filename puede $ chmod +x ngrok $ mv ngrok /usr /bin Si todo fue de acuerdo con el plan, debería poder ejecutar $ ngrok -v y recibir resultados similares con la versión 2.1.3 de Ngrok. Ahora, me gustaría migrar el contenido en un sitio local que se ejecuta en DeliciousBrains. En primer lugar, comenzaré ngrok, usando la opción -host -header = reescritura para especificar el host virtual al que quiero hacer un túnel: $ ngrok http -host -header = reescritura deliciosa … para mostrar una pantalla como esta : Ahora, puedo asumir la información de conexión DB Pro Migras WP. ¿Quién me dio ngrok, asegurándome que mantengo la URL: https://fc4fba3c.ngrok.io/wp 50vdutueraeeeksspelt+6MR9S4IR/QFRLM usando esta nueva información de inicio de sesión, Puedo conectarme a mi sitio local desde cualquier servidor que tenga acceso a Internet, ya sea que tenga o no acceso a mi red.
Cualquiera que haya utilizado nuestro suplemento de herramientas multisitio para migrar suscripciones a sitios únicos y viceversa podría estar interesado en esta solución, porque las almendras solo pueden ejecutarse desde Multisite. Esto significa que puede impulsar una suscripción en un solo sitio o puede llevar un solo sitio a una suscripción, pero aún no puede hacerlo. Esto puede ser un problema si desea obtener una instalación local en un solo sitio en una instalación en vivo en varios sitios. La solución actual es configurar un solo sitio en vivo donde pueda empujar las instalaciones y luego extraer ese sitio en multitud. Es un poco doloroso, pero hace el trabajo hasta que tengamos la oportunidad de construir el resto de las características. Con Ngrok, podemos eliminar ese sitio intermedio y podemos dibujar sitios locales únicos en suscripciones para instalaciones en vivo en múltiples sitios o empujar suscripciones en vivo en nuestros sitios de desarrollo locales.



Consejos para usuarios con poder de WP migrar DB Pro
Tags Consejos para usuarios con poder de WP migrar DB Pro
homefinance blog