2010-01-29 5 views
0

Une fonction du fichier functions.php peut-elle appeler une autre fonction depuis functions.php? Je devine oui et c'est pourquoi j'ai écrit le code ci-dessous, mais cela ne fonctionne pas pour une raison quelconque. Quelqu'un peut-il s'il vous plaît vérifier et m'aider.WordPress functions.php Problème

J'ai essayé d'appeler pageBarColor() de register_sidebar()

Merci.

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

function pageBarColor(){ 
    if(is_category('3')) { 
     return "color1"; 
    } elseif(is_category('4')) { 
     return "color2"; 
    } elseif(is_category('5')) { 
     return "color3"; 
    } elseif(is_category('6')) { 
     return "color4"; 
    } elseif(is_category('7')) { 
     return "color5"; 
    } 
} 
?> 
+0

S'il vous plaît préciser ce ne fonctionne pas. Avez-vous des messages d'erreur? –

+0

Aucun message d'erreur. Juste ne retourne rien, chargement de la page avec rien n'a changé. En fait, c'est un espace parce que je l'ai donné là-bas. – Aayush

Répondre

2

Le problème est probablement que lorsque vous appelez register_sidebar Wordpress n'a pas encore exécuté le code qui détermine le résultat de is_category. Si vous essayez d'appeler votre fonction pageBarColor directement après l'avoir définie, vous verrez qu'il ne retourne rien. Une façon de contourner ce serait de brancher dans le filtre dynamic_sidebar_params (qui est appelée lorsque vous appelez dynamic_sidebar dans vos modèles, en supposant que vous) et mettre à jour votre widget before_title valeurs, quelque chose comme ceci:

function set_widget_title_color($widgets) { 
    foreach($widgets as $key => $widget) { 
     if (isset($widget["before_title"])) { 
      if(is_category('3')) { 
       $color = "color1"; 
      } elseif(is_category('4')) { 
       $color = "color2"; 
      } elseif(is_category('5')) { 
       $color = "color3"; 
      } elseif(is_category('6')) { 
       $color = "color4"; 
      } elseif(is_category('7')) { 
       $color = "color5"; 
      } 

      if (isset($color)) $widgets[$key]["before_title"] = str_replace("moduleTitle", "moduleTitle ".$color, $widget["before_title"]); 
     } 
    } 
    return $widgets; 
} 
add_filter('dynamic_sidebar_params', 'set_widget_title_color'); 
+0

hé merci pour la réponse, mais je ne sais rien sur les actions, alors pourriez-vous s'il vous plaît me lier à une page requise. Merci pour la réponse .. – Aayush

+0

J'ai essayé ceci et j'appelle dynamic_sidebar dans mon thème, mais rien ne change. – Aayush

+0

mon mauvais! Je ne demande pas la dynamic_sidebar dans mon sidebar.php J'ai plutôt ceci: !

  • <- trucs montré ici si aucun widget n'est actif ->
  • et le reste de mon encadré est fait manuellement. existe-t-il un autre moyen de faire les changements de couleur. – Aayush