почитал, посмотрел, вот что написал:
<?php
if ( in_category('3') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} elseif ( in_category('4') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} elseif ( in_category('5') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=5');
} elseif ( in_category('6') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=6');
} elseif ( in_category('7') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=7');
} else {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=7');
}
?>
и почему-то всегда выводит именно то что в ELSE, не так задаются айдишники категорий?
ага )) пару слов не сумел перевести теперь все понял )) значит вот объясняю кому нить надо будет:
вот этот код:
<?php
if ( in_category('3') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} elseif ( in_category('4') ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} else {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=7');
}
?>
будет выводить «меню категорий и подкатегорий» той категории, ID которой мы указали. Данное меню будет выводиться только если статья принадлежит именно этой категории… ну и если мы находимся вне заданных категорий то выводит уже по функции ELSE меню из категории 7.
если мы хотим чтобы меню этих категорий выводилось не только в статьях которые принадлежат этим категориям но и которые относятся к подкатегориям, тогда пишем такой код:
if ( in_category('3') || post_is_in_descendant_category( 3 ) ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} elseif ( in_category('4') || post_is_in_descendant_category( 4 ) ) {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
} else {
wp_list_categories('orderby=name&show_count=0&use_desc_for_title=0&child_of=4');
}
?>
и незабываем добавить в файл functions.php в директории вашей темы вот эту функцию:
function post_is_in_descendant_category( $cats, $_post = null )
{
foreach ( (array) $cats as $cat ) {
// get_term_children() accepts integer ID only
$descendants = get_term_children( (int) $cat, 'category');
if ( $descendants && in_category( $descendants, $_post ) )
return true;
}
return false;
}
Спасибо YuBe за линк!
Спасибо, что поделились 🙂 Обратите внимание: у вас в первом фрагменте child_of=4
вместо child_of=3
, а во втором вообще везде child_of=4
.
это для примера, там много больше строк, в первом мне нужно было чтобы в двух категориях выводилось одно и тоже меню )