• Есть функция которая получает список родительских категорий текущей категории.

    get_category_parents($parent, false, ‘/’, true)

    Какую функция нужно применить к taxonomy (register_taxonomy())?
    В результате этой вместо (/portfolio/picture/) я получаю (//picture).

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Второй раз задаю вопрос на этом форуме и не кто не отвечает. Он настолько сложный?

    Он настолько сложный?

    Чтобы на него ответить это надо столкнуться с таким, а раз, видимо, никто не сталкивался, тогда надо воспроизвести поведение функции и предварительных условий, таксономии там и все остальное… Кому хочется? 😉
    Посмотрите, что вообще возвращает эта функция, var_dump в помощь.

    Могу выложить код полностью. Это поможет?
    Смотрил я var_dump() возвращает тоже самое, что и в результате «/».
    Мне бы хватило ответа на один вопрос. Может для taxonomy есть своя функция вычисления родительских категорий? Если нет, продолжу копать в другом направлении.

    возвращает тоже самое,

    Да, можно не смотреть, там используется функция get_category, которая только для категорий..

    Может для taxonomy есть своя функция вычисления родительских категорий?

    Может, надо смотреть или доки, или исходники.

    Спасибо за ссылки пойду копаться.
    Походу придется написать свой get_category_parents. )

    Пометка (Что я пытался сделать):

    С помошью register_taxonomy(), я созданю новую группу категорий отдельную от «Рубрики» для нового типа записей который создал при помощи register_post_type(). Но на новые типы записей не дейсвтует правило «Постоянных ссылок» и поэтому пришло парсить УРЛ. В итоге вышло, но ссылка оказалась неварная и все упирается именно в этот участок.

    get_category_parents($parent, false, ‘/’, true)

    Спасибо мужик(wikicms) помог. )) так сказать хорошо подсказал.

    Подправил функцию. Все те же параметра, что и у
    get_category_parents() плюс еще один «taxonomy_name».

    get_category_parents($category, $name_taxonomy, $display_link, $separator, $nice_name);

    Код функции:

    function get_category_parents_taxonomy( $id, $tax, $link = false, $separator = ‘/’, $nicename = false, $visited = array()) {
    $chain = »;
    if ( !$tax) {$tax=’category’;}
    $parent = get_term( $id, $tax);
    if ( is_wp_error( $parent ) )
    return $parent;

    if ( $nicename )
    $name = $parent->slug;
    else
    $name = $parent->name;

    if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
    $visited[] = $parent->parent;
    $chain .= get_category_parents_taxonomy( $parent->parent, $tax, $link, $separator, $nicename, $visited );
    }

    if ( $link )
    $chain .= ‘term_id ) ) . ‘» title=»‘ . esc_attr( sprintf( __( «View all posts in %s» ), $parent->name ) ) . ‘»>’.$name.’‘ . $separator;
    else
    $chain .= $name.$separator;
    return $chain;
    }

    $category (число)
    ID категории, для которой нужно вывести родительские категории. По умолчанию берется ID текущей категории, если удалось определить (определить удается обычно на страницах категорий).
    По умолчанию: текущая категория или нет

    $name_taxonomy строка
    Название таксономии к которой принадлежит элемент ID ($category)
    По умолчанию: category

    $display_link (логический)
    true — выведет список родительских категорий в виде ссылок на страницы категорий. False — будут выведены названия.
    По умолчанию: false

    $separator (строка)
    Разделитель между названиями.
    По умолчанию: ‘/’

    $nice_name (логический)
    true — выведет альтернативные названия (слаги) категорий (которые используются в УРЛах), а false — выедет реальные названия.
    По умолчанию: false

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