Как указать странице категории Wordpress для вызова определенной боковой панели - PullRequest
0 голосов
/ 15 января 2010

Я пытаюсь использовать стилизованную боковую панель, специфичную для данной категории. У меня есть следующий код, который работает, но он вытягивает ОБА мою новую боковую панель и по умолчанию. Что я тут не так делаю?

Из категории .php

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

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

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

Ответы [ 4 ]

3 голосов
/ 17 января 2010

Существует небольшая проблема с предоставленным вам кодом. Но, как предположил Eimantas, вы можете просто создать новый файл под названием category-39.php, который отлично справится с этой задачей, если, хотя по какой-то причине вы все еще хотите продолжать использовать файл category.php, то вот что вам нужно делать:

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

Разница между этим и вашим кодом в том, что я удалил

<?php get_sidebar(); ?>

Кроме того, я изменил in_category на is_category. Причина этого заключается в том, что при просмотре самой страницы категории использование is_category изменится в списке категорий, тогда как in_category смотрит только на текущее сообщение и, следовательно, не изменится в соответствии с исключением просмотра страницы single.php.

Пример: in_category изменит боковую панель для следующего URL www.mysite.com/category/stuff/myfirstpost Но это не изменит боковую панель для этого URL www.mysite.com/category/stuff Простое использование is_category решит эту проблему.

Следующая вещь будет использовать

get_sidebar('2');

и

get_sidebar();

get_sidebar (); запустит соответствующие функции WordPress, относящиеся к боковой панели, в дополнение к включению sidebar.php. get_sidebar ( '2'); с другой стороны, будут запускаться все соответствующие функции wordpresss, связанные с боковой панелью, а также загружаться sidebar-2.php.

Надеюсь, это поможет,

3 голосов
/ 15 января 2010

Потому что вы вызываете боковую панель дважды; сделать это:

<?php

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

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

}
?>
1 голос
/ 17 января 2010

Вы должны создать отдельный шаблон с именем category-39.php и делать общие вещи дизайна. Сам WP заметит, что должен применить этот шаблон к категории с id = 39. Нет необходимости в операторах if else.

1 голос
/ 17 января 2010

Удалите это из вашего кода:

get_sidebar();

в противном случае вы вызываете этот файл "sidebar.php" дважды ...

если вы посмотрите документацию wp http://codex.wordpress.org/Function_Reference/get_sidebar

Вы можете сделать это так:

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