¿Qué son los Hooks de WordPress y Cómo usarlos?

¿Qué son los Hooks de WordPress y Cómo usarlos?

  • Autor de la entrada:
  • Categoría de la entrada:Tips
  • Comentarios de la entrada:Sin comentarios

Cuando empecé con WordPress, buscaba formas de hacer cambios por programación y encontré el concepto de Hooks. Al inicio hablar de Hooks te puede parecer un poco complejo, sin embargo luego de familiarizarte con este término verás que usarlos te resultará más fácil de lo que piensas.

 

Tabla de Contenido

 1- ¿Qué son los Hooks de WordPress?

 2- Tipos de Hooks

 3- Usando Hooks

 4- ¿Cómo localizar Hooks?

 – Artículos relacionados

 – Video explicativo

1- ¿Qué son los Hooks de WordPress?

¿Te imaginas que puedas hacer cambios en la funcionalidad de WordPress sin modificar sus archivos fuente?, pues eso es precisamente los que nos permiten los Hooks. La palabra Hook se puede traducir como gancho, la idea es «enganchar nuestro código adicional» en los ganchos que están disponibles a lo largo de todo el código WordPress, y evitar hacer modificaciones a sus archivos directamente.

Código WordPress con Hooks

Usar tu código adicional a través de Hooks te permite conservar las modificaciones que realices luego de una actualización de WordPress

La estructura de Hooks no es exclusiva sólo del core de WordPress es aplicable también a plugins externos

 

2- Tipos de Hooks

Existen dos tipos de Hookslas acciones y los filtros, ambos son muy parecidos en su estructura y forma de usarlos, sin embargo difieren en el valor que retornan.

Internamente, a nivel de WordPress, una acción y un filtro son tratados de manera similar, es decir una acción es un filtro con parámetros por defecto

 

2.1 – Action Hooks

Las acciones te permiten agregar funcionalidad, ejecutando tus propias funciones en un determinado punto, por ejemplo llegado a un punto:

  • Insertar scripts
  • Mostrar un formulario
  • Validar un usuario
  • Imprimir un mensaje, etc

Como ves, si encuentras un punto en donde puedas trabajar con un Action Hook, no estas restringido a devolver algún tipo de valor particular.

 En los archivos de WordPress para localizar en donde puedes insertar un Action Hook debes buscar la función do_action(), luego, puedes hacer referencia a tu código a través de una función llamada add_action, tal como se ve en la siguiente imagen:

Ejemplo Action Hook

 

 Sintaxis de add_action


add_action( string $hook, callable $tu_funcion, int $prioridad = 10, int $args = 1 )

Como ves, los parámetros requeridos son los dos primeros, el nombre del hook y el nombre de tu función, los otros dos parámetros son opcionales, indican la prioridad de ejecución y la cantidad de argumentos pasados a la función. Para más información puedes revisar la documentación oficial de add_action.

2.2- Filter Hooks

Los filtros, al igual que las acciones, nos permiten ejecutar una función personalizada en un determinado punto, sin embargo la función que usemos tendrá un parámetro de entrada, dentro de nuestra función haremos modificaciones al parámetro y finalmente volveremos a retornar el parámetro.

Algunos valores devueltos por los filtros son por ejemplo:

  • Cadenas de texto
  • Arrays

 

 En los archivos de WordPress para localizar en donde puedes insertar un Filter Hook debes buscar la función apply_filters(), luego, puedes hacer referencia a tu código a través de una función llamada add_filter, tal como se ve en la siguiente imagen:

Ejemplo Filter Hook

 

 Sintaxis de add_filter


add_filter( string $hook, callable $tu_funcion, int $prioridad = 10, int $args = 1 )

Al igual que una acción, en el caso de un filtro los parámetros requeridos son los dos primeros, el nombre del hook y el nombre de tu función, los otros dos parámetros son opcionales.

Para usar un filtro, al construir tu función, tendrás al menos un parámetro de entrada por defecto, el cual deberás devolverlo luego de modificarlo. Para más información puedes revisar la documentación oficial de add_filter.

 

3- Usando Hooks

En el siguiente ejemplo aprenderás cómo reemplazar el título de una entrada, lo podrás hacer usando tanto acciones como filtros.

El código que se usa para modificar los Hooks puedes colocarlo en el archivo functions.php de tu theme o si estas construyendo un plugin como parte de los archivos del plugin.

 Usando Acciones


add_action( 'the_post', 'dcms_cambiar_objeto_post' );

function dcms_cambiar_objeto_post( $post_object ) {
	// print_r($post_object);
	$post_object->post_title = str_replace('Hola', 'Hi', $post_object->post_title);
}

En el código anterior:

  • Usamos el Action Hook the_post que hace referencia a la función dcms_cambiar_objeto_post
  • La función dcms_cambiar_objeto_post por defecto tiene un parámetro que es el objeto post
  • Podemos ver toda lo que contiene el objeto con la función print_r
  • En el ejemplo estamos cambiando el título, si encuentra el texto «Hola» lo cambia por «Hi»
  • No necesitamos retornar ningún valor porque el objeto se pasa por referencia

 

 Usando Filtros


add_filter( 'the_title', 'dcms_filtro_titulo' );

function dcms_filtro_titulo( $titulo ) {
    $titulo = str_replace('Hola', 'Hi', $titulo);
    return $titulo;
}

En el código anterior:

  • Usamos el Filter Hook the_title que hace referencia a la función dcms_filtro_titulo
  • La función acepta el texto del título como parámetro por defecto
  • Cambiamos la variable $titulo, si encuentra el texto «Hola» lo cambia por «Hi»
  • Finalmente es necesario retornar el valor de la variable $titulo

 

En nuestro ejemplo pudimos hacer la misma modificación tanto con acciones como con filtros, sin embargo no es lo más común. Usualmente las acciones están reservadas para cambiar funcionalidad diferente a los filtros

 

4- ¿Cómo localizar Hooks?

Una forma para localizar los Hooks que quieres modificar es navegando en el código fuente de WordPress, sin embargo otra opción es usar un sitio web como Hookr que te ofrece un índice de los hooks disponibles de acuerdo a la funcionalidad.

Deja un comentario