Filtro body_class — Adicionar classes ao
Causa
Estilizar páginas específicas via CSS exige identificadores no elemento body. Editar o template diretamente acopla o plugin ao tema.
Como resolver
Adicione suas classes ao array $classes e retorne-o. Nunca retorne apenas o array com suas classes — isso remove todas as classes padrão do WordPress.
PHP
<?php
add_filter('body_class', function (array $classes): array {
// Classe para usuários logados
if (is_user_logged_in()) {
$classes[] = 'usuario-logado';
$user = wp_get_current_user();
foreach ($user->roles as $role) {
$classes[] = 'role-' . sanitize_html_class($role);
}
}
// Classe para página específica
if (is_page('contato')) {
$classes[] = 'pagina-contato';
}
// Remove classe gerada pelo WP que causa conflito
$classes = array_diff($classes, ['page-template-default']);
return array_unique($classes);
});