2010-01-15 5 views
0

J'essaie de tirer dans une barre latérale de style spécifique à la catégorie. J'ai le code suivant qui fonctionne, mais il tire à la fois dans ma nouvelle barre latérale et la valeur par défaut. Qu'est-ce que je fais mal ici?Comment dire à la page de catégorie Wordpress pour appeler la barre latérale spécifique

De category.php

<?php get_sidebar(); 
if (in_category('39')) { 
include(TEMPLATEPATH . '/sidebar2.php'); 

} else { 
include(TEMPLATEPATH . '/sidebar.php'); 

} 
?> 
<?php get_footer(); ?> 
+1

Si vous avez obtenu une réponse de chacun d'entre nous qui ont posté, pourriez-vous s'il vous plaît aller de l'avant et marquer votre question une réponse en cliquant sur la case à cocher la réponse de quiconque était appropriée. Merci. – David

+0

désolé, ne sont pas là depuis un moment :) –

Répondre

3

Parce que vous appelez barre latérale deux fois; Pour ce faire,:

<?php 

if (in_category('39')) { 
include(TEMPLATEPATH . '/sidebar2.php'); 

} else { 
include(TEMPLATEPATH . '/sidebar.php'); 

} 
?> 
1

supprimer de votre code:

get_sidebar(); 

sinon vous ce fichier "sidebar.php" deux fois ...

si vous regardez dans la documentation wp http://codex.wordpress.org/Function_Reference/get_sidebar

vous pouvez le faire comme ça:

<?php 
if (in_category('39')) : 
    get_sidebar('two'); //this will include sidebar-two.php 
else : 
    get_sidebar(); 
endif; 
?> 
1

Vous devez créer un modèle distinct nommé category-39.php et effectuer des tâches de conception courantes. WP lui-même remarquera qu'il devrait appliquer ce modèle à la catégorie avec id = 39. Pas besoin d'instructions else if.

3

Il y a un léger problème avec le code qui vous est fourni. Mais comme l'a suggéré Eimantas, vous pouvez simplement créer un nouveau fichier appelé category-39.php qui accomplira parfaitement le travail, même si, pour une raison ou une autre, vous voulez continuer à utiliser votre fichier category.php, alors voici ce dont vous auriez besoin à faire:

if (is_category('39')) { 
    get_sidebar('2'); 
} else { 
    get_sidebar(); 
} 
?> 
<?php get_footer(); ?> 

la différence entre ceci et le code que vous avez envoyé que j'ai enlevé

<?php get_sidebar(); ?> 

de plus, je l'ai changé in_category à is_category. La raison en est que lorsque vous regardez la page de catégorie elle-même, en utilisant is_category changera dans la liste des catégories, alors in_category ne regarde que la publication actuelle et ne changera donc pas, sauf si vous regardez la page single.php.

Exemple: in_category changera la barre latérale pour l'adresse suivante www.mysite.com/category/stuff/myfirstpost Mais il ne changera pas la barre latérale pour cette URL www.mysite.com/category/stuff simplement en utilisant is_category va résoudre ce problème.

La prochaine chose serait d'utiliser

get_sidebar('2'); 

et

get_sidebar(); 

get_sidebar(); exécutera les fonctions wordpress appropriées liées à la barre latérale en plus d'inclure sidebar.php. get_sidebar ('2'); d'autre part exécutera toutes les fonctions de wordpress appropriées liées à la barre latérale tout en chargeant sidebar-2.php.

Hope this helps,

Questions connexes