Usar ganchos de WordPress para limpiar el código, la activación y la desinstalación

Los autores de los complementos dedican tanto tiempo y energía a la funcionalidad principal de sus productos que permiten cosas menos importantes para escapar. Tome la activación y la desactivación, por ejemplo. Si bien los ganchos activadores están muy extendidos, muchos complementos necesitan agregar algunas opciones, eliminar las reglas de reescritura, crear una tabla de base de datos o verificar las diferencias en la instalación: los ganchos de descendencia y desinstalación son mucho menos frecuentes. La idea aquí? Muchos autores de arado no se toman el tiempo para limpiarse. ¿Instalar WordPress realmente necesita la tabla personalizada que creó después de eliminar el complemento? ¿Por qué no eliminar algunas opciones que son exclusivas del complemento antes de tirarlo a la basura?
En este artículo, le mostraré cómo usar los ganchos de activación, desactivación y desinstalación para inicializar su complemento y limpiar las cosas más fáciles después de que los usuarios hayan terminado con su producto.
El gancho de activación
Secuencia de instalación
Reglas de lavado para reescribir
Creación de tablas de bases de datos
Controles de adicción
El gancho de deshabilitar
El gancho de desinstalación
Seguridad adicional
Es hora de limpiar
Nota: Si tiene la intención de pasar por este artículo, le sugiero que eche un vistazo a la sección “Seguridad adicional” al final, lo que completa el código con algunas verificaciones de seguridad valiosas. Además, si necesita ayuda con los ganchos de WordPress, aquí hay una actualización rápida del uso de ganchos de WordPress y cómo activar una función de WordPress.
El gancho de activación Aunque el gancho de activación es bastante simple, su instalación es un caso ligeramente especial, por lo que tendremos que prestar atención a la sucesión de eventos. Antes de ingresar a todo esto, aquí hay un ejemplo simple: la idea F356A899B7F009D13643833339DB4F6 está cargada.
La clave para todo es la función registre_activation_hook (). El primer parámetro es la ruta al archivo del complemento principal; El segundo parámetro define la función de rodadura. Internamente, la función registra_activation_hook () es un recubrimiento para la acción “activado_ [complemento_name]”, pero como es un poco más fácil de usar, es inusual ver el trabajo de complementos.
La secuencia de instalación que entiende la secuencia de instalación es importante, ya que evita el uso de los métodos que usó. Se llama a registro_activation_hook () entre el usuario que hace clic en el enlace de activación y, en consecuencia, ve la notificación de la activación. Se ejecuta en una página intermedia, que inmediatamente redirige antes de que cualquier gancho tenga la oportunidad de correr. Veamos un ejemplo para ver por qué es una gran decepción: lavar las reglas para reescribir una serie de complementos crean tipos de publicaciones personalizadas. Eliminar las reglas de reescritura para activarse para garantizar que los usuarios no reciban un error 404 cuando visitan una publicación del nuevo tipo de publicación personalizada es un movimiento inteligente.
El siguiente código parece lógico, pero fallará.
La idea 7C65623608EFD1785437EBE7CDB7350 está cargada.
Parece perfectamente correcto. Se crea el tipo de publicación personalizada y, cuando se activa, eliminamos las reglas de reescritura. El problema es que los tipos de publicaciones personalizadas aún no se han creado cuando eliminamos las reglas de reescritura. Así es como se ve el flujo de proceso: el usuario instala el complemento.
El usuario hace clic en el enlace de activación.
Una página intermedia ejecuta solo el gancho de activación, nada más. Esto elimina las reglas de reescritura.
El complemento está activo y el código se ejecuta como de costumbre. El tipo de publicación personalizado está registrado.
Una solución publicada en Stack Overflow, que es aprobada oficialmente por WordPress Codex, resuelve nuestro pequeño problema. La solución implica agregar una opción para indicar que el complemento acaba de instalar.
Si esta opción existe, hacemos nuestras actividades de activación y luego la eliminamos. Algo como eso:
Cargue la idea 6F0927B3BF9807E426C8778A3BF3A797
Personalmente, no me gusta demasiado esta solución. El problema es que la verificación en la línea ocho se ejecuta en cada carga de página. No hay nada de qué preocuparse, porque no pondrá una gran tarea en sus servidores y no ralentizará el sitio para los usuarios. Es una verificación muy rápida con un impacto insignificante en el rendimiento. Sin embargo, es inútil en el 99.9% del tiempo. Hay una mejor solución mencionada en Codex en la documentación para la función flush_rewrite_rules (). En esta solución, utilizamos la modularidad de nuestras funciones para separar el tipo de publicación personalizada sobre la activación por separado:
Cargue el esencial B44BF08BF511277184A49DE53C0C3ED8
En lugar de confiar en una verificación que tiene que ejecutarse todo el tiempo, usamos la función de activación para grabar nuestras publicaciones. Tenga en cuenta que una vez que se activa nuestro complemento, los tipos de publicaciones siempre se registrarán desde la inicial. Este es un triste ejemplo de que el Codex está en todas partes. En general, WordPress tiene una buena documentación, pero si algo parece ser un desperdicio o ilógico, no tendrá miedo de hacer algo de investigación. Creación de las tablas de la base de datos Otra tarea que realizan algunos complementos es crear tablas de base de datos. La mayoría de las veces, esto es inútil, pero hay algunos casos de uso legítimos. Esto está en el artículo de Codex sobre la creación de tablas sobre cómo usar más llamadas de activación:
Cargue la idea 9A1D4757D023F24442093A9A158CDB6B4
La primera característica, jal_install () crea una nueva tabla de base de datos. La segunda función, jal_install_data agrega datos iniciales a la tabla. En lugar de usar registro_activation_hook () para agregar una función que contenga todo este código, podemos usar registro_activation_hook varias veces.
Esta es una excelente práctica para la modularidad. Por un lado, no tiene que agregar datos de prueba iniciales, es tan simple como eliminar el gancho de activación, por lo que puede mantener la función intacta. Por otro lado, es libre de reutilizar estas funciones en cualquier lugar, porque están separadas.
La dependencia verifica otra tarea común para la función de activación es verificar las adicciones. Su complemento puede confiar en una determinada versión de WordPress, otro complemento o incluso una determinada versión de PHP. El siguiente código verifica una versión mínima de WP y PHP y redirige al usuario (sin activar el complemento) si es necesario: la idea 79A2C5414969291EC90CAC11C38B7522 está cargada.
El gancho de discapacidad se desactiva en ejecución cuando un usuario ha deshabilitado un complemento, pero antes de que no esté instalado (eliminado). Los ganchos para deshabilitar se usan de la misma manera que activar ganchos:

Cargue la idea 6ED9BB66EE1863AB3E84DB1F9F753792
Deshabilitar significa que el usuario solo ha deshabilitado su complemento, por lo que no querrá hacer todo lo posible durante una desinstalación. Es posible que desee eliminar las reglas de reescritura, pero en esta etapa, no querrá deshacerse de todas las opciones y la tabla de base de datos (si tiene una). Esto es bastante simple, pero prestaré especial atención a lavar las reglas de reescritura, porque, nuevamente, son problemáticos. El Codex recomienda hacerlos como se muestra a continuación, pero esto no funciona:
Cargue la idea 4440a0178b4e34506530e13d0ead8958
La razón por la que esto no funciona es la misma que antes. Ejecutar una desactivación hace que Init Hook, lo que significa que, a medida que deshabilitamos nuestro complemento, también registramos nuestro tipo de publicación personalizado. Las reglas de reescritura se eliminan, pero tienen en cuenta el tipo de publicación personalizada. Un boleto de TRAC está vigente para resolver esto, pero hasta entonces, no puedo darle una muy buena manera de hacer esto. La única forma en que descubrí que funciona es eliminar las reglas de reescritura: la idea 98b496826278084a2f7a5ea27994f781 está cargada.
Aunque esto funcionó para mí en el pasado, no lo recomendaría. Introduce una mayor incertidumbre que el problema de tener algunas reglas de reescritura adicionales. Preferiría mostrar una nota a los usuarios por los cuales pediría visitar la configuración de enlace permanente después de la desactivación, lo que eliminaría las reglas de reescritura. Hasta que se implementa una mejor solución, estamos bloqueados con ella … ¡disculpas! El gancho de desinstalación hay dos formas de ejecutar el código al desinstalar un complemento. Puede usar el gancho de desinstalación a través del registro_unstall_hook () o puede usar un archivo dedicado uninstall.php en su enchufe. El principal problema con el gancho de desinstalación es que “evita ejecutar el archivo del complemento principal durante la desinstalación, lo que puede ser problemático si el complemento ejecuta código en el espacio global. También es mejor por el hecho de que el código de desinstalación está centralizado “. – Scott Riley El siguiente código muestra el proceso de desinstalación utilizando un gancho básico:
La idea se carga 040847DB4739148900B1EE29D227D71DDU Como discutimos, esta no es la mejor solución. Una manera mucho mejor de administrar desinstalaciones es usar el archivo uninstal.php. Todo lo que tiene que hacer es crearlo y usarse si está disponible.
Cargue la idea 44DDE25DCB57B4239BE8586F4D04C765
Como puede ver, esta es en realidad una solución más simple. Lo mejor de todo es autónomo. Seguridad adicional No quería complicar los ejemplos presentados hasta ahora con problemas de seguridad, pero debe tomar algunos pasos para asegurarme de que solo aquellos a quienes se les permite hacerlo pueda realizar estas acciones. Use el siguiente fragmento para la activación y la desactivación:
Cargue la idea 357037989065f89c15f049314e9831bf
Este bloque de código asegura que el usuario tenga los permisos para realizar esta acción y que la acción haya aparecido en la página apropiada. Esto debería proteger contra la mayoría de los intentos maliciosos. El proceso de desinstalación es especial, por lo que tendremos que usar un código ligeramente diferente:
La idea se carga 541C93CFA9B89E1E6C7B48B06732D31F
Es hora de limpiar si su complemento agrega cosas a WordPress, entonces es su deber como desarrollador eliminarlo cuando un usuario decide borrar su complemento. El uso de los métodos de activación, desactivación y desinstalación descritas anteriormente le permitirá construir un sistema que lo haga seguro y seguro. También recomiendo leer este cable stackexchange, que presenta estos procesos en medios OOP. Si aún no es un miembro WPMU de, regístrese para obtener una muestra gratuita y completamente libre de riesgos hoy. Como miembro, tendrá acceso a todos nuestros excelentes complementos y al extraordinario servicio de alojamiento rápido, además de asistencia experta 24/7 para todas sus preguntas y problemas. ¿Cuándo los elimina? Cuéntanos lo que piensas en los comentarios a continuación.
Etiquetas:
Desarrolladores de WordPress
Ganchos de WordPress

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *