Hoy veremos los hooks de loops.php, y veremos cómo funcionan las prioridades y el orden de carga si varias funciones usan el mismo hook. ¿Cómo se resuelve?
Para empezar veremos qué es eso del loop, que actions lo "envuelven" y cuáles se ejecutan "dentro". Y luego veremos qué es lo que ocurre si dos funciones se cuelgan dentro del mismo hook.
6.1 - Hooks de Genesis en loops.php
El archivo loops.php tiene 10 hooks. Uno antes del loop, siete durante, y dos después. Veamos dónde se muestran exactamente, cómo localizarlos e incluso cómo visualizar el hook que sólo aparece si no hay loop.
Como podéis ver, la teoría es exactamente la misma. Simplemente localizamos el hook que más nos interesa y le enganchamos una función creada por nosotros. ¡Y ya está!
Pero demos un paso más allá... ¿Qué pasa si enganchamos dos funciones en un mismo hook? ¿Qué pasa si otro plugin lo hace? ¿Qué pasa si el theme lo hace? ¿Cuál se ejecuta antes?
6.2 - Prioridades y orden de carga
En ocasiones nos vamos a encontrar que aprovechar el mismo hook para colocar dos funciones distintas. O incluso puede pasar que no seamos nosotros, sino otro desarrollador, que tiene un plugin con funciones que usan el mismo hook que nosotros. O puede ser que sea el child theme, que lo está haciendo. ¡O incluso que seamos nosotros los que estamos haciendo un child theme!
¿Qué ocurre en esos casos? ¿Qué función carga antes? ¿La de un plugin, o la de un theme? ¿Y entre dos plugins? ¿Y dos funciones dentro de un mismo plugin?
Ningún problema. Vamos a arrojar luz sobre todo esto:
¿Interesante verdad? ¿Entendéis ahora porqué WordPress es tan bueno? ¿Y porqué Genesis es extraordinario?
Simplemente teniendo en cuenta el orden de carga que os he contado, el orden del código, y las prioridades explícitas en cada add_action, ya sois capaces de establecer un orden de carga personalizado para cada ocasión, independientemente de si lo estáis cargando en un plugin, un mu-plugin o un theme.
Este vídeo es muy importante, o sea que si no os queda claro os animo a verlo un par de veces. Los deberes de hoy son hacer experimentos con los 10 hooks y jugar con las prioridades y el orden de carga con el plugin que estamos haciendo y functions.php, para comprobar que todo se ejecuta en el orden querido.
Y no os preocupéis, porque en la próxima clase seguiremos con los hooks, profundizando más sobre el tema de las prioridades y orden de carga. O sea que ahora, a disfrutar con lo aprendido. En breve... ¡Más! :)
Todos los capítulos de este curso:
- Curso de Genesis Avanzado #1: Soporte para Custom Post Types
- Curso de Genesis Avanzado #2: Condicionales
- Curso de Genesis Avanzado #3: init.php hooks
- Curso de Genesis Avanzado #4: header.php hooks
- Curso de Genesis Avanzado #5: framework.php hooks
- Curso de Genesis Avanzado #6: loops.php hooks y prioridades
- Curso de Genesis Avanzado #7: comments.php y sobrescribiendo funciones
- Curso de Genesis Avanzado #8: sidebar.php y sidebar-alt.php hooks
- Curso de Genesis Avanzado #9: footer.php hooks
- Curso de Genesis Avanzado #10: Filter hooks