Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
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

Cómo solucionar el error 404 en WordPress
Cómo solucionar el error 404 en WordPress
El error 404 o de página no encontrada es uno de los errores más comunes, no sólo en WordPress. Puede darse por multitud de razones,…
Añadir clases par/impar en los listados de WordPress
Añadir clases par/impar en los listados de WordPress
En esta entrada vamos a ver cómo introducir las clases par/impar en los listados de WordPress de tres formas diferentes. A veces puede resultar útil…
Cómo solucionar fallo en las actualizaciones automáticas en WordPress
Cómo solucionar fallo en las actualizaciones automáticas en WordPress
Por defecto las actualizaciones menores de WordPress se ejecutan de manera automática, y en alguna ocasión pueden fallar. Es raro, pero puede darse. Lo que…
Ocultar el editor WYSIWYG en función del template seleccionado
Ocultar el editor WYSIWYG en función del template seleccionado
Es probable que en alguna ocasión estés haciendo un desarrollo a medida donde necesites crear una plantilla de página para una determinada sección o grupo…