add_filter()

add_filter() engancha tu función a un filter hook. Funciona exactamente igual que add_action() en cuanto a parámetros, con una diferencia crucial: el callback siempre debe devolver el valor.

Sintaxis

add_filter( $hook, $callback, $prioridad, $num_args );

Parámetros — idénticos a add_action()

  • $hook — nombre del filter hook
  • $callback — función que modifica el valor
  • $prioridad — orden de ejecución, por defecto 10
  • $num_args — argumentos que acepta el callback, por defecto 1

Ejemplo: modificar el título de los posts

add_filter( 'the_title', 'prefijo_en_titulos', 10, 2 );
function prefijo_en_titulos( $title, $post_id ) {
    // solo en el frontend y en posts de tipo 'noticia'
    if ( is_admin() ) {
        return $title;
    }
    if ( get_post_type( $post_id ) === 'noticia' ) {
        return '📰 ' . $title;
    }
    return $title;
}

Ejemplo: añadir clases al body

add_filter( 'body_class', 'mis_clases_body' );
function mis_clases_body( $classes ) {
    // $classes es un array de strings
    if ( is_singular( 'producto' ) ) {
        $classes[] = 'pagina-producto';
        $classes[] = 'layout-ancho';
    }
    return $classes; // devolver el array modificado
}

Encadenar varios filtros sobre el mismo hook

// Cada add_filter añade un callback más a la cadena
// Se ejecutan en orden de prioridad
add_filter( 'the_content', 'añadir_cabecera', 5 );   // primero
add_filter( 'the_content', 'añadir_pie',     15 );  // tercero
add_filter( 'the_content', 'limpiar_html',   10 );  // segundo (default)