WordPress body_class(); Function

Estes dias eu comecei a desenvolver um tema chamado de DevStart, o qual vou disponibilizar aqui no blog, e me deparei com um problema ao usar esta função maravilhosa do WordPress.

A função body_class(); é muito útil quando você tem que desenvolver um tema e gostaria de fazer um pouco de dinamismo nas cores, por exemplo, pois colocando-a dentro da tag <body> adicionamos classes à tag que dizem algumas informações sobre que página o usuário está visitando, e desta forma podemos aplicar o devido CSS.

O problema que eu me deparei ontem quando comecei a implementar esta função, foi que ela adiciona todo o texto class="classes", e isso é ruim, mesmo que a função nos permita adicionar nossas classes, não me permite usar um plugin em jQuery para descobrir qual navegador o sujeito usa. Então fiz um pequeno hack para fazer a função apenas adicionar as classes.

Bom primeiro vou explicar como é o uso normal da função. A função, como eu já citei anteriormente deve ser colocado dentro da tag <body>, da seguinte forma:

<!--Cabeçalho acima-->
<body <?php body_class(); ?>>
<!--Corpo da página abaixo-->

Se for usado desta forma teremos o seguinte resultado quando estivermos na home do nosso blog e logados no sistema:

<!--Cabeçalho acima-->
<body class="home blog logged-in">
<!--Corpo da página abaixo-->

O que eu fiz foi bem simples, utilizando uma função chamada get_body_class();, que é a função que faz todas as verificações e define em uma variável todas as classes que devem ser adicionadas e retorna um array, eu usando o implode(); do PHP eu criei uma função no arquivo function.php para solucionar o nosso problema e apenas escrever as classes.

Então vamos abrir o arquivo functions.php e vamos adicionar o seguinte código:

function echo_body_class() {
	echo implode(" ", get_body_class());
}

Este código cria a função echo_body_class(); e transforma o array retornado em apenas uma string separando cada um dos resultados com um espaço.

Bom agora acesse seu arquivo que contém a tag <body> e substitua-a pelo seguinte:

<!--Cabeçalho acima-->
<body class="<?php echo_body_class(); ?>>">
<!--Corpo da página abaixo-->

Então teremos o mesmo resultado que com a função body_class(); porém agora poderemos adicionar todas as classes que nos forem interessantes. Problema resolvido.

Ahh e sobre este tema que estou desenvolvendo, ele vai ser colocado aqui no blog para download, e sua principal função é servir como tema base para o desenvolvimento de outros.

, , ,

Deixar uma Resposta

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>