apply_filters()
apply_filters() es la función que crea un filter hook. Tomas un valor, lo pasas por la cadena de callbacks registrados y devuelves el resultado. Si nadie se ha enganchado, devuelve el valor original.
Sintaxis
$valor_final = apply_filters( $hook_name, $valor, ...$args_extra );
Ejemplo básico: valor filtrable
// En el plugin — defino un valor que puede ser modificado
function mi_plugin_get_limite() {
$limite_por_defecto = 10;
return apply_filters( 'mi_plugin_limite_resultados', $limite_por_defecto );
}
// En functions.php del tema — cambio el valor sin tocar el plugin
add_filter( 'mi_plugin_limite_resultados', function( $limite ) {
return 20; // el tema quiere 20 en lugar de 10
});
// Llamada
$limite = mi_plugin_get_limite(); // devuelve 20
Ejemplo real: opciones configurables
function mi_plugin_get_color_boton() {
return apply_filters( 'mi_plugin_color_boton', '#336699' );
}
// Cualquier tema o plugin puede cambiar el color
add_filter( 'mi_plugin_color_boton', function() {
return get_theme_mod( 'color_primario', '#336699' );
});
Pasar argumentos extra al filter
// El segundo argumento es el valor filtrable
// Los siguientes son contexto adicional (solo lectura)
$precio_final = apply_filters( 'mi_plugin_precio', $precio_base, $producto_id, $usuario_id );
// Engancharse con acceso al contexto
add_filter( 'mi_plugin_precio', 'aplicar_descuento', 10, 3 );
function aplicar_descuento( $precio, $producto_id, $usuario_id ) {
if ( user_tiene_descuento( $usuario_id ) ) {
return $precio * 0.9; // 10% de descuento
}
return $precio;
}
Buena práctica
Envuelve en apply_filters() cualquier valor configurable de tu plugin. Hace el código infinitamente más flexible sin añadir opciones en la interfaz.
