Bienvenidos a la quinta lección del curso de Genesis avanzado, en el que enseñamos y aprendemos a programar en Genesis, el framework para WordPress.
Hoy seguimos con los hooks de Genesis. Vamos a ver los siete que tenemos en framework.php, y repasaremos el concepto "hook", así como sus usos.
Entramos ya en la parte más "física" de los hooks. Y digo "física" porque en este caso todos los hooks que veremos tienen una "ubicación" en el theme, con lo que es mucho más fácil entender para qué usarlos. También veremos como Genesis usa sus propios hooks.
5.1 - Hooks de Genesis en framework.php
En primer lugar, veamos exactamente dónde se encuentran esos hooks, y veamos como crear una función rápida para localizarlos en el theme. De los siete hooks que veremos, hay uno clave, que podríamos decir que es el "centro del universo", y otros seis más periféricos a ese. De hecho, en algunos de ellos incluso su nombre hace mención al principal, con esos "before" y "after". Veamos a que me refiero.
Como podéis ver, y seguramente habréis deducido, aquí la madre del cordero es genesis_loop, que está en el centro, y los otros seis hooks (tres antes y tres después) son una especie de "envoltorios", que incluso corresponden a la propia estructura del HTML.
Vamos ahora un paso más allá y analicemos cómo propiamente Genesis usa sus propios hooks para colocar sus propias funciones.
5.2 - genesis_loop hook
Vamos ahora a elegir ese hook tan interesante: genesis_loop. Veamos cómo Genesis lo utiliza para colocar su propia función genesis_do_loop, cómo lo hace, y cómo podemos referirnos a esa función (o a otras del framework) para modificarla o eliminarla.
Como podéis ver, es clave entender el orden en el que WordPress (y genesis) carga las cosas. Ese orden es el que hace que tengamos que colocar una linea de código en un sitio o en otro, a saber: En un mu-plugin, en un plugin, en functions.php, o en un archivo de plantilla del child theme.
Si no tenemos en cuenta eso, en ocasiones, si lo colocamos "demasiado pronto" descubriremos que no tiene efecto ya que la función ni siquiera existe, y si lo colocamos "demasiado tarde" no tendrá efecto. Debe ser en el momento apropiado. Debe ser en el hook apropiado.
En la próxima lección... ¡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