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.