Action Hooks ¿ Qué son ?

sailboat-hook-215825

En anteriores entregas hemos estado introduciendo  los Frameworks y los Child Themes para explicar brevemente lo que son y para que sirven.

Estuvimos comentando que una de las ventajas de utilizar un Framework es que podíamos modificarlo de una manera duradera, incluso resistente a futuras actualizaciones, y también vimos que la manera de conseguir esto era creando una Plantilla Hija.

Bien aquí es dónde entran los Action Hooks. De manera muy resumidada podemos decir que un Action Hook (un gancho para Accionar) es una función (en PHP)  vacía.  Recordemos que una función en php tiene esta pinta,

<?php function bastante_basico() {

   // Vamos a saludar

   echo'HOLA Mundo';

} ?>

En el código dentro de nuestro tema tendríamos  esta llamada

<?php bastante_basico() ?>

Si alguna vez por curiosidad habéis echado un vistazo al código de  un  Tema WordPress entonces seguro que ya los habéis visto,  wp_head()  y wp_footer()  son  dos Action Hooks.

¿ Y para que sirve tener funciones vacías en un Tema ?

Pues muy fácil, sirven para poder incluir algo en dicho Tema, cómo por ejemplo otras funciones que escribamos, llamadas a Plugins, fantásticos carruseles de imágenes que usan JQuery   etc.. etc..  Es una manera muy poderosa  de influir y modificar nuestro Tema.

Para entenderlo mejor vamos a considerar un ejemplo real.  Para ello usaremos un Framework que fue uno de los pioneros en implementar esta técnica y que ya citamos anteriormente, se trata de  Thematic. Si tenéis algo de tiempo vale la pena pasarse por su foro de usuarios (en inglés), dónde encontraremos cantidad de ejemplos y soluciones sobre cómo intervenir mediante Action Hooks. Es una fuente inagotable para aprender.  Vamos a suponer que queremos insertar un mensaje de bienvenida justo debajo de la cabecera de nuestro blog.

Para poder hacer esto necesitamos saber a que Action Hook tenemos que “engancharnos” para que salga nuestro mensaje. Esto habitualmente  lo encontraremos en la documentación de nuestro Framework preferido.  En el caso que nos ocupa miremos dónde está:

Lo que vemos en el pantallazo, es el Tema thematic en su aspecto por defecto, en el cual los desarrolladores han sobrepuesto en rojo todos los Action Hooks que han creado para que nosotros los podamos utilizar. ¿ Genial no ?

Cómo queremos insertar un mensaje de bienvenida debajo de la cabecera, vamos a utilizar el Action Hook  thematic_belowheader()

Previamente  habremos creado un Child Theme.  En nuestro directorio  /wp-content/themes/Miplantillasuperchula/ crearemos un fichero functions.php. (en la inmensa mayoría de los Frameworks este es el fichero que se usa). Es en este fichero functions.php dónde pondremos todo nuestro código (el código está comentado para ver lo que estamos haciendo).

<?php // Empezamos creando nuestra función  
function mensaje_de_bienvenida(){
 
// Queremos que salga el mensaje sólo en la página de inicio 
// y unicamente si no es la 2,3,4...?>
  <?php if (is_home() & !is_paged()) {?>

<!-- aquí empieza el mensaje -->
<div id="bienvenida">
Bienvenidos a <?php bloginfo('name'); ?>.
</div>
<!-- fin de de nuestro mensaje de bienvenida -->
<?php } 
 
} // Aquí termina nuestra función 

//Ahora vamos a engancharla a nuestro Action Hook 
add_action('thematic_belowheader','mensaje_de_bienvenida');?>

Este será el resultado que obtendremos tras aplicar un poco de formato con el CSS para que se vea mejor.

Cómo vemos hemos conseguido modificar el aspecto de nuestra plantilla Madre sin sobrescribir dicha plantilla y eso mediante el uso de un Child Theme y de un Action Hook. Este ejemplo es a la vez muy simple pero nos da una buena idea de lo que podemos llegar a hacer desde el punto de vista del diseño.

5 thoughts on “Action Hooks ¿ Qué son ?

    • Gracias Daniel, me he inspirado parcialmente en uno de los tutoriales de Ian (el creador de Thematic) ya que siempre me han parecido muy didácticos.
      Es una pena que Thematic esté bastante parado desde que Ian se fue a trabajar para automattic, aunque hay una comunidad muy fuerte detrás y parece que algún proyecto para darle continuidad. Yo aprendí mucho con este Framework, estaría realmente bien que tuviese futuro, y de paso que lo re-escribieran en html5 (puestos a pedir ;)
      Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>