ti-enxame.com

Como verificar a classe em body_class () em Wordpress

Dentro de Wordpress header.php, eu tenho

<body <?php body_class($class); ?>>

Como verificar se existe uma classe específica e carregar a marcação como resultado? Por ex.

<body class"home logged-in">

<?php if $class == 'home' ?>
    <div class="home"></div>
<? else : ?>
    <div class="internal-page"></div>
<? endif; ?>

Obrigado!

14
Yasir

Se você realmente precisa usar marcações diferentes com base no body_class classes e use get_body_class

$classes = get_body_class();
if (in_array('home',$classes)) {
    // your markup
} else {
    // some other markup
}

Mas provavelmente existem maneiras melhores de fazer isso, como a sugestão de Rob de Tags Condicionais . Esses mapas são bem parecidos com as classes usadas por body_class.

40
s_ha_dum

Você pode acessar body_class Com um filtro add_filter('body_class', function ...) no entanto, acho que você está adotando a abordagem errada. Por que não usar apenas css para o que você precisa? Por exemplo, .home>div { /* home styles */ }

Ou você pode carregar uma folha de estilo diferente

add_filter('body_class', function($classes) {
    if (in_array('home', $classes)) {
        wp_enqueue_style('home');
    }
    return $classes;
});
1
Rob

Eu tive o mesmo problema que criei páginas usando modelos diferentes, mas um submenu personalizado precisava ser o mesmo em cada página.

Eu tentei este primeiro o que falhou

<body <?php body_class( 'extra-class' ); ?>>

As classes extras foram adicionadas à tag body, mas quando executo o log de erros, ele não estava na matriz de classes. Então, eu tinha certeza de que foi adicionado mais tarde à etiqueta do corpo.

Esta solução funcionou para mim:

functions.php

$GLOBALS['extraBodyClass'] = '';

No arquivo de modelo

<?php $GLOBALS['extraBodyClass'] = 'extra-class' ?> - primeira linha do arquivo de modelo

<body <?php body_class( $GLOBALS['extraBodyClass'] ); ?>> - após a declaração do nome do modelo

No arquivo header.php

$classes = get_body_class();
if($GLOBALS['extraBodyClass']){
   $classes[] = $GLOBALS['extraBodyClass'];
}
0
László Péter Varga