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 defecto10$num_args— argumentos que acepta el callback, por defecto1
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)
