Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
WordPress Code Snippets

Cómo pasar un parámetro a un filtro de WordPress

Hace unos días publiqué una entrada sobre qué son, cómo crear y cómo utilizar los filtros de WordPress. En esta entrada vamos a ver cómo pasar un parámetro a un filtro de WordPress.

Un filtro nos permite actuar sobre un contenido antes de mostrarlo en pantalla. Es una característica muy utilizada en WordPress y que nos da una flexibilidad muy grande a la hora de desarrollar plugins y/o temas.

Recordemos que para aplicar un filtro utilizamos la función apply_filters() que admite los siguientes parámetros:

$value = apply_filters( 'my_filter_hook', $value, $arg1, $arg2... );

Donde el primer parámetro es el nombre de nuestro filtro y el segundo es el valor que pasaremos a la función que aplicará el filtro. A continuación podemos pasar una serie de valores adicionales, tantos como queramos.

Después, a través de la función add_filter() podremos invocar a nuestra función de callback donde podremos intervenir y modificar el contenido y/o los valores de $value, $arg1, $arg2

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 );

Pero, ¿qué pasa si queremos pasar uno o varios valores más a la función de callback? Es muy habitual tener una función donde hacemos un cálculo u obtenemos unos datos en función de unas premisas, y para cada casuística querer obtener un resultado distinto. Si al final de esta función llamamos a un filtro de WordPress o de un plugin de terceros, vamos a necesitar enviar un parámetro a nuestra función de callback para actuar en el filtro de una manera u otra.

Para esto haremos uso de las funciones anónimas (Clousure) de PHP. En el callback, en lugar de llamar a la función, crearemos una función anónima donde haremos uso de nuestro parámetro.

Utilizaré un ejemplo de pippin plugins donde a través de un filtro añadimos una serie de frutas a un array:

function pippin_show_fruits() { $fruits = array( 'apples', 'oranges', 'kumkwats', 'dragon fruit', 'peaches', 'durians' ); $list = '<ul>'; if (has_filter('pippin_add_fruits')) { $fruits = apply_filters('pippin_add_fruits', $fruits); } foreach($fruits as $fruit) : $list .= '<li>' . $fruit . '</li>'; endforeach; $list .= '</ul>'; return $list; } function pippin_add_extra_fruits($fruits) { $extra_fruits = array( 'plums', 'kiwis', 'tangerines', 'pepino melons', ); // combine the two arrays $fruits = array_merge($extra_fruits, $fruits); return $fruits; } add_filter('pippin_add_fruits', 'pippin_add_extra_fruits'); echo pippin_show_fruits();

La función de callback pippin_add_extra_fruits() obtiene el valor de $fruits que aplicamos en el filtro y lo modifica. Si quisiéramos enviar un parámetro calculado adicional no podríamos. Para esto vamos a hacer uso de las funciones anónimas, para nuestro ejemplo quedaría del siguiente modo:

//Parámetro calculado $my_param = array('bananas', 'pears'); add_filter('pippin_add_fruits', function( $fruits ) use($my_param) { $fruits = array_merge($my_param, $fruits); return $fruits; });

De este modo enviamos la variable $my_param al fitro.

Puede que también te interese

Cómo agregar el generador de contraseña fuerte de WordPress en nuestro formulario de registro personalizado
Cómo agregar el generador de contraseña fuerte de WordPress en nuestro formulario de registro personalizado
En la entrada anterior veíamos cómo crear un formulario de registro personalizado en WordPress. En el ejemplo, generábamos una contraseña automáticamente, pero ahora vamos a…
Establecer la primera imagen de un post como destacada
Establecer la primera imagen de un post como destacada
Cuando escribimos una entrada o página en WordPress, por defecto nos deja establecer una imagen destacada o thumbnail: Esta imagen destacada suele usarse por ejemplo…
Cómo agregar campos personalizados al perfil de usuario de WordPress
Cómo agregar campos personalizados al perfil de usuario de WordPress
WordPress nos da la opción de permitir que los usuarios se registren en nuestro sitio (en Ajustes => Generales => Cualquiera puede registrarse). Por defecto…
Cómo crear imágenes destacadas con tamaños personalizados en WordPress
Cómo crear imágenes destacadas con tamaños personalizados en WordPress
Con ésta cuestión nos podemos encontrar muy a menudo sobre todo si estamos desarrollando temas a medida. En nuestro diseño vendrán definidas unas imágenes con…