Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)
En programación, la inicialización de datos es importante, ya que es ahí donde configuramos los requisitos previos para la aplicación, como sus atributos, sus archivos y datos necesarios, su conexión a la base de datos, etc.
El propio WordPress tiene un procedimiento de inicialización bien definido. A través del ciclo de vida de la página, WordPress desencadena una serie de acciones, muchos de las cuales hemos explicado en anteriores artículos. Para ello, proporciona un conjunto de ganchos de inicialización que efectivamente se usan para inicializar la aplicación antes de ejecutar su funcionalidad principal.
Como desarrolladores de plugins y temas, es importante entender los casos de uso y los errores que se comenten habitualmente en estos enlaces de inicialización con el fin de crear aplicaciones de calidad.
En este artículo, vamos a echar un vistazo a la importancia de los ganchos de inicialización de WordPress y a cómo se utilizan bajo distintos escenarios.
Introducción a los ganchos de inicialización
WordPress proporciona una amplia gama de ganchos que se pueden utilizar en el desarrollo de plugins y temas.
En una típica solicitud de página, todos los ganchos de acción se ejecutan en un determinado orden. Específicamente, todos los ganchos se ejecutan después de que la aplicación principal de WordPress haya completado su proceso de carga.
Así que los ganchos de inicialización se utilizan principalmente para, lo adivinaste, inicializar el proceso en plugins y temas. Echemos un vistazo a los ganchos init disponibles en WordPress, en su orden de ejecución:
- init se ejecuta después de que WordPress haya concluido su cargar, pero antes de que lo cabeceras hayan sido enviadas. Generalmente, esto es usado por los plugins para inicializar su proceso.
- widgets_init se utiliza para registrar widgets de la columna lateral o "sidebar" de la aplicación. La función
register_widgetse ejecuta dentro de este gancho. - admin_init se ejecuta como primera acción, cuando el usuario accede a la sección de administración de WordPress. Por lo general, se utiliza para inicializar ajustes específicos del área de administración.
También puedes revisar todo el proceso de ejecución del gancho de acción de WordPress en el Codex.
WordPress ejecuta cada gancho en un orden determinado (que se puede ver en el Codex). Como tal, es importante tener en cuenta el orden de aparición en el uso de cada gancho de acción. Considere los siguientes escenarios para identificar las diferencias.
Definir admin_init dentro del gancho init
Si es necesario, podemos definir ganchos de WordPress dentro de otros ganchos. En una solicitud típica, el enlace init se ejecuta antes del enlace de admin_init. Así que vamos a tratar de generar algo colocando admin_init dentro del gancho de entrada:
1 |
|
2 |
add_action( 'init', 'test_init'); |
3 |
function test_init(){ |
4 |
add_action( 'admin_init', 'test_admin_init'); |
5 |
}
|
6 |
|
7 |
function test_admin_init() { |
8 |
echo "Admin Init Inside Init"; |
9 |
}
|
Después de ejecutar este código, obtendremos la salida deseada mediante la instrucción echo.
Definición de init dentro del gancho admin_init
Veamos el código y la salida en este escenario donde se define un gancho anterior dentro de un gancho que aparece más adelante en el orden de ejecución.
1 |
|
2 |
add_action( 'admin_init', 'test_admin_init'); |
3 |
function test_admin_init() { |
4 |
add_action( 'init', 'test_init'); |
5 |
}
|
6 |
|
7 |
function test_init() { |
8 |
echo "Init Inside Admin Init"; |
9 |
}
|
Aquí, no obtendremos ninguna salida, era algo esperado ya que el gancho init se ejecuta antes del gancho admin_init, y por lo tanto no está disponible después de definir el gancho admin_init.
Como puedes ver, es vital entender el procedimiento de ejecución de ganchos para construir plugins exitosos. El orden de ocurrencia es importante para todos los ganchos en WordPress.
Explorando los ganchos init y admin_init
De entre los ganchos de inicialización, init y admin_init vale la pena explorar estos dos ya que son utilizados ampliamente en muchos plugins. El uso de otros ganchos de inicialización es sencillo en comparación con el de estos.
Como tal, vamos a ver la funcionalidad de los ganchos init y admin_init.
El gancho init se ejecuta en cada solicitud tanto para el front-end como para el backend del sitio de WordPress.
El gancho admin_init se ejecuta después de que la sección admin complete su proceso de carga. Por lo tanto, este enlace también se ejecuta en todas y cada una de las solicitudes de página de administración. Los usuarios deben iniciar sesión para aprovechar este gancho.
Dado que ambos enlaces se ejecutan en todas y cada una de las solicitudes, tenemos que planificar las funcionalidades dentro de la implementación de estos enlaces en consecuencia, ya que puede afectar en gran medida el rendimiento del sitio.
Cómo usar los ganchos init
Generalmente, los ganchos de inicialización están disponibles en la mayoría de los plugins de WordPress existentes, y son esenciales para administrar su procesamiento.
WordPress no define lo que debemos y lo que no debemos incluir; por lo tanto, los desarrolladores pueden cometer errores menores que, a su vez, pueden resultar en una enorme disminución del rendimiento. En esta sección, vamos a ver cómo podemos usar eficazmente tanto el gancho init como admin_init.
Echemos un vistazo a las prácticas recomendadas en el uso de ganchos de inicialización.
El gancho init
- Registrar tipos de entradas personalizadas - WordPress recomienda el uso del gancho
initpara registrar nuevos tipos de entradas personalizadas. - Inicialización de las configuraciones y los ajustes del plugin - Las configuraciones y los ajustes del plugin deben definirse en todas y cada una de las solicitudes y por lo tanto es una buena práctica incluirlos dentro de este gancho.
- Acceso a los datos enviados por el usuario (usando $_GET y $_POST): podemos interceptar los datos enviados por el usuario sin ninguna acción, pero se recomienda utilizar el gancho
init, ya que garantiza la ejecución en cada solicitud. - Añadir nuevas reglas de reescritura: podemos definir nuevas reglas de reescritura mediante el gancho
init, pero ten en cuenta que estas nuevas reglas solo surtirán efecto una vez que eliminemos las reglas de reescritura. - Añadir o quitar acciones personalizadas: los plugins contienen muchas acciones personalizadas para ampliar su funcionalidad. Habrá escenarios en los que necesitamos agregar nuevas acciones personalizadas, así como eliminar las existentes. En tales ocasiones, es esencial implementar esas actividades dentro del gancho
init. - Cargar el texto del dominio del plugin - WordPress ofrece soporte multi-idioma y por lo tanto se nos permite cargar el archivo que contiene las cadenas traducidas. Esto también debe colocarse dentro del gancho
init.
El gancho admin_init
- Control de acceso: es esencial comprobar los permisos de los usuarios que han iniciado sesión antes de permitir que cada uno de ellos acceda a un conjunto concreto de características o funciones.
admin_inites la primera acción que se ejecuta en el área de administración así que podemos usarla para administrar el control de acceso. - Añadir nuevos ajustes: Podemos usar este gancho para añadir nuevas páginas de configuración o ajustes en el panel de ajustes de WordPress existente.
Hay muchas otras posibles implementaciones con estos ganchos, pero esas características tienen sus propios ganchos y no es necesario usar ganchos de inicialización.
Errores comunes en el uso de ganchos de inicialización
A menudo, encontramos escenarios en los que los desarrolladores no entienden el uso de los ganchos de inicialización. El uso incorrecto de dichos ganchos puede dar lugar a serios problemas de rendimiento (y también a plugins de baja calidad).
Identifiquemos los errores habituales y cómo evitarlos:
- Vaciar reglas de reescritura: se trata de una operación que consume muchos recursos en la que todas las reglas de reescritura se vacían y se reorganizan para añadir nuevas reglas y quitar reglas innecesarias. Muchos desarrolladores vacían las reglas de reescritura dentro de las acciones
inity terminan creando una sobrecarga de rendimiento innecesaria en cada solicitud. Debemos configurar una forma manual de vaciar las reglas de reescritura usando un botón o vaciar las reglas en actividades poco frecuentes como el almacenamiento de la configuración del plugin. - Acceso a la base de datos: es imprescindible tener acceso a la base de datos para proporcionar distintas funcionalidades, pero es importante evitar llamadas innecesarias a la base de datos dentro de ganchos de inicialización ya que se ejecuta en cada solicitud. Para ello, lo ideal es asignar ganchos de base de datos en ganchos específicos de funcionalidad para evitar una importante sobrecarga de rendimiento.
- Ejecución de rutinas de actualización: los plugins deben tener una rutina de actualización para mantener al día sus características en relación a las nuevas versiones. Por lo general, los desarrolladores utilizan enlaces init para comprobar las versiones y la configuración del plugin antes de ejecutar el proceso de actualización. Podemos permitir que los usuarios actualicen el plugin proporcionando una pantalla personalizada en lugar de comprobar automáticamente todas y cada una de las solicitudes.
- Usar ganchos init en lugar de ganchos específicos de funcionalidad - Este es el error más común cometido por muchos desarrolladores. En WordPress hay una amplia gama de ganchos orientados a distintas, y únicas funcionalidades. Es importante usar ganchos específicos de la funcionalidad para evitar conflictos y permitir que el código sea extensible. Ganchos como
inityadmin_initse pueden utilizar en lugar de ganchos específicos, por tanto, los desarrolladores tienden a usarlos sin conocer todos sus efectos. Algunos de los escenarios comunes donde los desarrolladores usan los ganchosinityadmin_initen lugar de los ganchos recomendados son los siguientes:- admin_menu - Podemos añadir páginas de menú utilizando la función
add_menu_page. Aunque se recomienda usar el ganchoadmin_menupara crear páginas de administración. Pero muchos desarrolladores usan el ganchoadmin_init, ya que se ejecuta después del ganchoadmin_menu. - wp_enqueue_scripts - La forma recomendada de añadir estilos y scripts es usando el gancho
wp_enqueue_scripts. Pero muchos desarrolladores usanwp_enqueue_scriptdentro del ganchoinitpara cargar scripts y estilos.
- admin_menu - Podemos añadir páginas de menú utilizando la función
Hay un número de situaciones similares donde los desarrolladores usan el habitual gancho init en lugar del gancho específico para cada funcionalidad, algo que debe prevenirse siempre que sea posible.
Ir más allá con los ganchos de inicialización
Los ganchos de inicialización de WordPress juegan un papel vital en el desarrollo de plugins y temas. Muchos desarrolladores hacen un uso indebido de los ganchos, lo que crea una sobrecarga innecesaria en el rendimiento. En este artículo, discutimos el uso adecuado de estos ganchos, así como los errores habituales y cómo evitarlos.
Ahora podemos aplicar la misma técnica a los ganchos personalizados específicos de plugins. Muchos plugins avanzados utilizan sus propios ganchos de acción para hacerlos extensibles. En este tipo de plugins, podemos definir ganchos de inicio específicos del plugin que permitan a los desarrolladores enfocarse en las tareas de inicialización de ganchos predefinidos en lugar de usarlos por todas partes.
Siéntete libre y comparte tus experiencias en el uso adecuado de los ganchos init, así como errores en el uso de ganchos de inicialización. ¡Queremos ver lo que vas a compartir en los comentarios!



