2010-02-01 9 views
0

Je veux changer les noms de classe des widgets sidebar sur toutes les différentes catégories de pages de WordPress et j'ai pensé que la meilleure façon de le faire serait de faire une fonction dans les fonctions. php avec toutes les conditions et renvoyer le nom de classe requis. J'ai ensuite appelé la fonction dans les balises list de la fonction register_sidebar.Modifier les noms de classes CSS de widget pour différentes pages de catégorie dans WordPress

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 certaines raisons, cela ne fonctionne pas. S'il vous plaît Aide

Merci

Répondre

2

Je pense que register_sidebars est appelé trop tôt dans le processus, lorsque la catégorie est pas encore défini. Avez-vous essayé d'implémenter le filtre dynamic_sidebar_params? Je n'ai rien trouvé dans le Codex WordPress, mais j'ai trouvé ce nice example. Votre autre question sur ce sujet a aussi a complete answer. Ceci ne fonctionne que si vous implémentez les barres latérales en utilisant dynamic_sidebar dans votre widget, car cette fonction appelle le filtre dynamic_sidebar_params. Si vous avez des widgets statiques (définis dans votre modèle, n'utilisez pas la page d'administration du widget), vous devez ajouter un appel à votre fonction dans ce code 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 --> 
Questions connexes