web-dev-qa-db-fra.com

Ajout de filtre conditionnellement par ID de page

J'ai créé une fonction pour ajouter une classe au corps, mais ne devrait s'appliquer qu'à un seul ID de page. Ce ne serait normalement pas un problème, mais cela casse la mise en page d'autres pages.

Fonction de filtrage

add_filter('body_class','add_blog_to_body_class');

function add_blog_to_body_class($classes) {
    $classes[] = 'blog';
        return $classes;
}

Ma condition (ça ne marche pas)

function add_blog_to_body_class($classes) {
    $classes[] = 'blog';
    if ( is_page('ID') ) {
        return $classes;
    }
}

J'ai emballé toute la fonction, la déclaration, le hook add_filter et tout sans chance.

Comment cette fonction peut-elle fonctionner avec une seule page?

3
Jarmerson

Il est important de renvoie toujours la valeur dans les rappels de filtre, sinon cela revient à ajouter le rappel __return_null().

Voici un exemple qui ajoute la classe blog uniquement aux pages portant l'ID 40:

add_filter( 'body_class', 'add_blog_to_body_class' );

function add_blog_to_body_class( $classes )
{
    if ( is_page( 40 ) )
        $classes[] = 'blog';

    return $classes;
}
3
birgire