web-dev-qa-db-fra.com

Ajouter la classe à la page des messages

J'essaie de donner un style unique à la page Blog/Posts, qui ne figure pas sur la page d'accueil. La balise body ressemble maintenant à ceci: <body <?php body_class() ?>>
Mais faire ceci <body <?php body_class('blog') ?>> ne retourne que <body class="logged-in"> ou seulement <body> si je ne suis pas connecté.

J'ai essayé:

<body <?php if ( is_home()) {
    echo 'class="blog"';
} else {
    body_class(); }?>>

Cela fonctionne en quelque sorte, mais il remplace entièrement la classe "connectée". Il doit y avoir un moyen d'ajouter des classes à la balise body pour les pages de posts, n'est-ce pas?

1
Dominic Neo

Dans le fichier de fonctions de votre thème, utilisez le filtre body_class pour ajouter de nouvelles classes:

function wpse_282694_body_class( $classes ) {
    if ( is_home() ) {
        $classes[] = 'blog';
    }

    return $classes;
}
add_filter( 'body_class', 'wpse_282694_body_class' );

Si vos archives de catégorie, archives de balises, archives de date et résultats de recherche ont également besoin du même style, ce qui est assez commin, vérifiez chacune d'elles de la manière suivante:

if ( is_home() || is_date() || is_tag() || is_category() || is_search() ) {}

Notez que je n'ai pas utilisé is_archive(), car cela aurait également une incidence sur les types de publication personnalisés que vous pourriez utiliser.

1
Jacob Peattie