¿Qué son y para qué sirven los hooks de WordPress?

Crear plugins o desarrollar un tema completo en WordPress es muy sencillo. Para lograrlo primero debes saber qué son los hooks y aprender a dominarlos. En este artículo aprenderás qué son los hooks y cómo te ayudarán a convertirte en una verdadera estrella de WordPress.

¿Qué son los hooks de WordPress?

Hook es un termino genérico en WordPress que se usa como referencia, en lugares estratégicos dentro del core, para inyectar código propio y agregar comportamientos o cambiar el funcionamiento por defecto de WordPress.

Un hook puede ser declarado en dos lugares dependiendo del tipo de desarrollo que estés haciendo: en function.php, si estás trabajando con un tema o tema hijo; o directamente en un plugin.

En WordPress existen dos tipos de hooks: Acciones (Actions) y Filtros (Filters).

Action Hooks

Una acción te permite ejecutar tus propias funciones en un lugar específico dentro de la línea de tiempo de ejecución de WordPress, Plugin o Tema para que puedas agregar nuevas funcionalidades o personalizaciones. Es decir, “cuando llegues a este punto, haz esto”.

Te puedes interesar: Cómo crear un plugin para WordPress desde cero

Anatomía de un Action Hook

La forma mas genérica de representar una acción es la siguiente:

add_action( $hook, $funcion );

Profundicemos en esta línea de código:

add_action: es la función nativa de WordPress para agregar una acción.

$hook: es el nombre de la acción en donde inyectaremos nuestro código.

$funcion: es el nombre de la función que deseamos ejecutar.

Veamos un ejemplo real y bastante común de cómo usar un hook. El wp_head, usado por muchos temas y plugins para agregar información entre los tags de la página, en este ejemplo vamos a añadir un meta tag.

Objetivo: agregar un meta tag de descripción

Con el nombre de la función para agregar una acción, y el nombre del hook en donde vamos a inyectar nuestro código, basta declarar la función con nuestra lógica:

add_action( 'wp_head',       'platzi_add_meta_description' );

functionplatzi_add_meta_description(){
 echo"\n\r";
 echo"\n\r";
 echo"\n\r";
}

En este caso, nuestra función simplemente imprime un par de comentarios de HTML y nuestro meta tag. Al usar el hook wp_head puedes inyectar cualquier tipo de información.

Así, hemos inyectado exitosamente nuestro código con una acción.

Filter Hooks

Los filtros son funciones a las cuales WordPress pasa información en un punto de ejecución. Así, un filtro te permite manipular textos y contenidos antes de que sean utilizados, como modificar el título de un artículo antes de ser mostrado en pantalla, por ejemplo.

Al igual que las acciones, los filtros te permiten ejecutar tus propias funciones, con la gran diferencia de que el propósito de un filtro es únicamente modificar información. Dicho de modo simple: “dame esta información y cámbiala por esta otra.”

El propósito de un filtro es únicamente modificar información.

Anatomía de un Filter Hook

La declaración de un filter hook es muy similar a la de un action hook, la diferencia es el nombre de la función:

 add_filter( $tag, $funcion );

Profundicemos en esta línea de código:

add_filter: es la función nativa de WordPress para agregar un filtro.

$tag: es el nombre del filtro en donde inyectaremos nuestro código.

$funcion: es el nombre de la función que deseamos ejecutar.

Para poner en práctica el uso de un filter hook, vamos a modificar el titulo que WordPress imprime al usar la función wp_title()

Objetivo: obtener el título de la página y añadir el texto ‘Powered by Platzi’, usando el filtro wp_title.

Sabiendo el nombre de la función para agregar un filtro y el nombre del hook del cual vamos a tomar la información, solo basta declarar la función con nuestra lógica:

add_filter( 'wp_title',     'platzi_change_site_title' );
function platzi_change_site_title($title{
     return $title . " | Powered by Platzi";
}

En este caso nuestra función, a diferencia del action hook, recibe un parámetro: ¿recuerdas la definición del filter hook?

Los filtros son funciones a las cuales WordPress pasa información en un cierto punto de ejecución, de este modo un filtro te permite manipular textos y contenidos antes de que sean utilizados.

De esta forma, nuestra función recibe información, en este caso una cadena de texto, y dentro de nuestra lógica debemos agregar una cadena al final de la misma.

Cabe mencionar enfáticamente que una función que haga uso de los filtros siempre debe regresar algún tipo de información para que la ejecución del proceso continúe.