Modifier les noms de classe CSS du widget pour différentes pages de catégorie dans WordPress

Publié par Jean-Michel le

Je veux changer les noms de classe des widgets de la barre latérale sur chaque page de catégorie différente de WordPress et j’ai pensé que la meilleure façon de le faire serait de créer une fonction dans functions.php avec toutes les conditions et de renvoyer le nom de classe requis. J’ai ensuite appelé la fonction dans les balises list de la fonction register_sidebar.

if (function_exists('register_sidebar')) {
  register_sidebar(array(
   'before_widget' => '<li class="sidebarModule">',
   'after_widget' => '</li><!-- end module -->',
   'before_title' => '<h2 class="moduleTitle "'.set_widget_title_color().'>',
   'after_title' => '</h2>',
  ));
}


function set_widget_title_color() {

    if(is_category('technology')) {
        $color = "catNavColor1_active";
    } elseif(is_category('gadgets')) {
        $color = "catNavColor2_active";
    } elseif(is_category('social-media')) {
        $color = "catNavColor3_active";
    } elseif(is_category('gaming')) {
        $color = "catNavColor4_active";
    } elseif(is_category('other')) {
        $color = "catNavColor5_active";
    }

    return $color;
}

Pour une raison quelconque, ce qui précède ne fonctionne pas. Aidez-moi s’il vous plaît

Merci

Solution n°1 trouvée

Je pense register_sidebarsqu’on l’appelle trop tôt dans le processus, quand la catégorie n’est pas encore définie. As-tu essayé d’implémenter le dynamic_sidebar_paramsfiltre ? Je n’ai rien trouvé dans le Codex WordPress, mais j’ai trouvé ce bel exemple. Votre autre question sur ce sujet a également une réponse complète.

Cela ne fonctionne que si vous implémentez les barres latérales à l’aide dynamic_sidebarde votre widget, car cette fonction appelle le dynamic_sidebar_paramsfiltre. Si vous avez des widgets statiques (définis dans votre modèle, n’utilisant pas la page d’administration du widget), vous devez ajouter un appel à votre fonction dans ce code de modèle, comme ceci :

<li class="sidebarModule">
<h2 class="moduleTitle <?php echo set_widget_title_color(); ?>">Widget title</h2>
<?php /* Your widget code */ ?>
</li><!-- end module -->
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *