Поддержка Проблемы и решения Иерархия рубрик

  • Есть структура:
    рубрика
    -под рубрика
    —под рубрика2
    —запись

    В цикле для записи вывожу рубрику, получаю «под рубрика2» а мне нужна полная иерархия, с учетом того что записи присвоена только «под рубрика2»

    Как это сделать?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Atrax

    (@atrax)

    Ethical engineer

    По теме:
    http://codex.wordpress.org/Function_Reference/get_category
    Там описано, как можно получить идентификатор category_parent
    А по нему — сделать еще один запрос и получить родительскую рубрику.

    Как вариант.

    Флейм вычистил

    Спасибо Atrax, принцип понял, буду пробовать.

    Сделал вот так:
    <?php foreach((get_the_category()) as $childcat) { $parentcat = $childcat->category_parent; if( $parentcat != 0 ) echo '<a href="' . get_category_link($parentcat) .'">' .get_cat_name($parentcat) .'</a>'; else echo '<a href="' . get_category_link($childcat) .'">' .$childcat->cat_name .'</a>'; } ?>

    Но это дало мне только «—под рубрику2» и как то неправильно выполняется в цикле.

    function get_category_parents( $id, $link = false, $separator = ‘/’, $nicename = false, $visited = array() )
    * @param int $id Category ID.
    * @param bool $link Optional, default is false. Whether to format with link.
    * @param string $separator Optional, default is ‘/’. How to separate categories.
    * @param bool $nicename Optional, default is false. Whether to use nice name for display.
    * @param array $visited Optional. Already linked to categories to prevent duplicates.
    * @return string

    я использую вот так :

    echo preg_replace('~&nbsp;/&nbsp;$~','', get_category_parents($child_of, true, '&nbsp;/&nbsp;', 0, array(34,45) ) );

    preg_replace тут убирает последний разделитель

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

    $arr  = get_the_category( $id );
    $child_of  = array_pop($arr);
    echo preg_replace('~&nbsp;/&nbsp;$~','', get_category_parents($child_of, true, '&nbsp;/&nbsp;') );

    вот проверил код все работает

    $arr  = get_the_category( $id );
    $child_of  = array_shift($arr);
    echo preg_replace('~&nbsp;/&nbsp;$~','', get_category_parents($child_of->term_id, true, '&nbsp;/&nbsp;') );

    То что надо. Спасибо stur.

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