• вроде бы где-то видел что есть условие на принадлежность статьи к категории, кажется выглядит как-то так: in_category('cat_id') но что-то попобовал реализовать и не получилось, вылетает пустая страница.. нужно реализовать следующее:
    если статья принадлежит категории 1, то выводим «123»
    если статья принадлежит категории 2, то выводим «456»
    если статья принадлежит категории 2, то выводим «789»
    если не принадлежит никакой из этих категорий то выовдим «123456789»

    буду крайне признателен а то с синтаксисом не разберусь, а также если можно линк на русский мануал по данной функции, я наверно плохо ищу (

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Юрій

    (@yube)

    почитал, посмотрел, вот что написал:

    <?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 за линк!

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Спасибо, что поделились 🙂 Обратите внимание: у вас в первом фрагменте child_of=4 вместо child_of=3, а во втором вообще везде child_of=4.

    это для примера, там много больше строк, в первом мне нужно было чтобы в двух категориях выводилось одно и тоже меню )

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «условие принадлежности статьи к категории» закрыта для новых ответов.