WordPress Hooks

WordPress Hooks: Filters

En la entrada anterior vimos lo que eran los Actions en WordPress. En esta vamos a ver el otro tipo de hook: los filters.

Los Filters o filtros son un concepto parecido a los Actions. La diferencia es que su propósito es modificar la salida de información antes de que sea grabada en base de datos o mostrada en pantalla. Es decir, es una función a la cual podemos pasar información con el objetivo de manipular textos y contenidos antes de ser utilizados, por ejemplo modificar el título de un post antes de ser mostrado en pantalla.

Dicho de otro modo: Tengo esta información, modifícala por esta otra.

Si aún no ha quedado claro, vamos a verlo mejor con un par de ejemplos. El primero utilizando un filtro típico de WordPress, the_content, y en el segundo veremos cómo crear nuestros propios filtros en un plugin o tema.

 

Alterando el contenido de un post mediante el filter the_content

Para utilizar los filtros deberemos utilizar la función add_filter() de WordPress:

Donde

  • $tag (requerido): El nombre del filtro sobre el que queremos actuar.
  • $function_to_add (requerido): La función que se ejecutará cuando el filtro se aplique.
  • $priority (opcional): Prioridad de ejecución respecto a otras funciones que pueden también engancharse al filtro. El valor por defecto es 10. Valores bajos corresponden a mayor prioridad de ejecución.
  • $accepted_args (opcional): El número de argumentos que la función acepta. Por defecto 1.

 

WordPress dispone de multitud de filtros, puedes ver la relación de todos ellos aquí. Uno de los que más se utilizan es el filtro the_content. Éste filtro se ejecuta antes de mostrar el contenido de un post en pantalla. Se utiliza mucho para añadir información adicional como publicidad, scripts, posts relacionados, etc… al final del contenido

Como puede verse, a la variable $content, que tiene el contenido de nuestro post, concatenamos el texto Escrito por Pablo López. Retornamos la variable $content modificada por nosotros. Ésto es importante, a diferencia de los Actions, un Filter siempre debe retornar un valor.

 

Creando nuestros propios Filters

Crear filtros en nuestros temas y/o plugins es una buena práctica, ya que nos dará flexibilidad de cara al futuro para hacer ciertas modificaciones. Imaginemos que estamos haciendo un plugin que tiene un formulario para recoger una serie de datos.

Entre estos datos pintamos un select con rangos de edad: 0 – 10, 11 – 20, 21 – 30, 31 – 40, 41 – 50, +50. Si queremos dejar una puerta abierta para nosotros o para que un tercero pueda modificar estos valores, crearemos un filter con la función apply_filters().

 

 

La primera función get_age_range() es la que pinta el select de rango de edades. Como puede verse hemos creado el filter age_range con la función apply_filters(). En este ejemplo tenemos otra función add_new_age_range() que elimina el último rango de edad (+50) y añade dos tramos más. Esta función es a la que llamaremos desde add_filter() para modificar el contenido del select de nuestro tema o plugin.

De este modo dejamos la puerta abierta para poder actuar sobre el retorno en pantalla de una función a través de un filtro.

Puede que también te interese

Me han hackeado mi página web de WordPress, ¿qué puedo hacer?
Un día nos podemos levantar y encontrarnos con la desagradable noticia de que nuestro sitio ha sido infectado. Esto puede ocurrir por multitud de factores:…
Evitar la enumeración de usuarios en WordPress parte 1
La enumeración de usuarios es una vulnerabilidad que podría ser utilizada por un atacante o un usuario malicioso para intentar obtener un listado de los…
Insertar un anuncio entre el contenido de un post
Seguro que has visto en más de una ocasión páginas web que insertan anuncios o contenidos relacionados entre medias del propio contenido. De hecho yo lo tuve…
Oculta las notificaciones de plugins y temas en WordPress
Es posible que te hayas encontrado alguna vez o tengas un sitio creado con WordPress que tenga multitud de plugins instalados, o algún cliente que…