7

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

2195Puntos

hace 4 años

Curso de Temas y Plugins en WordPress
Curso de Temas y Plugins en WordPress

Curso de Temas y Plugins en WordPress

Crea sitios web profesionales utilizando WordPress, el administrador de contenido más popular del mercado. Desde cero, conoce cómo instalar WordPress, crear contenidos y adminístralos, gestiona SEO, archivos multimedia y logra que tu sitio sea exitoso.

Crear plugins o desarrollar un tema completo en Wordrpress 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 exitosamento 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.

Ahora que has aprendido lo básico, ¿te gustaría saber más sobre los parámetros opcionales de las funciones add_action y add_filter, o cómo puedes definir tus propias acciones y filtros en tus plugins y temas?

Anímate a aprender todo lo que debes saber sobre WordPress en el Curso de Temas y Plugins en WordPress.

¡Allá nos vemos!

Curso de Temas y Plugins en WordPress
Curso de Temas y Plugins en WordPress

Curso de Temas y Plugins en WordPress

Crea sitios web profesionales utilizando WordPress, el administrador de contenido más popular del mercado. Desde cero, conoce cómo instalar WordPress, crear contenidos y adminístralos, gestiona SEO, archivos multimedia y logra que tu sitio sea exitoso.
Enrique
Enrique
@Tmeister

2195Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
1
2011Puntos

buena info, gracias!

1
4284Puntos

excelente aporte, gracias

0
1430Puntos

Para que es ApplyFilters()?

Podrian darme un ejemplo…?

Quisiera saber si es posible crear un shortcode con un add_filter dentro…

0
895Puntos

Muy interesante el árticulo. ¿Existe un curso dedicado a hooks de WordPress? ¿Existe un curso de plugins wordpress?

0
1582Puntos

Muuuy bueno, gracias por la información, justo me estaba haciendo falta, muy bien explicado, gracias por compartir! Saludos…