• Всем доброго дня!

    Необходимо определить ID текущей рубрики. Если бы ситуация была на уровне is_category(), то есть выводилась бы главная страница рубрики, то действовать можно было бы так:

    $cat_ID = $GLOBALS[‘cat’];
    или так:
    $cat_ID = get_query_var(‘cat’);

    Но ситуация — in_category(), то есть выведен материал какой-то рубрики. Как в этом случае можно узнать ID категории? Осложняется это для меня тем, что узнать это надо не в цикле вывода материала, а за ним.

    Объясню ситуацию подробнее: На сайте выводится материал какой-то из рубрик. В сайдбаре при этом мне нужно вывести ссылки на статьи этой же рубрики. То есть узнать ID текущей категории надо не в цикле шаблона single.php, а в sidebar.php. Вопрос: Как?

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Необходимо определить ID текущей рубрики.

    get_cat_id — не?
    или get_the_category_by_id

    SeVlad, спасибо за отклик.

    get_the_category_by_id — сразу не то, ибо если судить по названию, то как раз любая информация о категории доступна по имеющемуся ID. Мне же этот самый айди и надо выяснить.

    Вторая функция как-будто работает так: <?php get_cat_ID( $cat_name ) ?>

    То есть ей надо скормить название рубрики, ID которой она и выдаст. Это тоже не годится. Мне нужно узнай айди текущей рубрики, о котрой я в общем случае ничего не знаю. То есть текущая и всё тут.

    Сегодня рубрик 4 и я могу в общем-то проверить их все по их именам или известным мне айди через условие in_category(). Но сайт будет сдан и контент-менеджеры будут заводить новые рубрики, чьи номера мне сейчас не известны. Мне не нужно перебирать в условиях все рубрики. Нужно написать одно общее для всех условие. Из какой бы рубрики ссейчас не был показан материал, в сайдбаре надо отобразить ссылки на статьи этой же рубрики.

    Задача решена. Решение оставляю тут на случай, если у кого-то будет сходная задача.

    Устраиваю цикл. в котором перебираю все айди категорий. Если на определенном шаге срабатывает условие in_category(), то этот айди сохраняю.

    foreach( (get_the_category()) as $category) {
        if ( in_category($category->cat_ID) ) { $cat_ID = $category->cat_ID; }
    }

    И дальше переменную $cat_ID использую для вывода того, что мне нужно.

    а не пробовали

    $thisCat = get_category(get_query_var('cat'),false);
    $cat = get_cat_ID($thisCat);

    Нет. не пробовал, по попробую вечером из дома или в понедельник :))
    Спасибо.

    get_the_category_by_id — сразу не то, ибо если судить по названию,

    не кто копипастнул, сорри 🙂
    get_category_by_slug (слаг-то получить думаю сможете)

    Или вот пример из кодекса:

    <?php
    global $post;
    $categories = get_the_category($post->ID);
    var_dump($categories);
    ?>

    SeVlad, я не могу заранее знать те слуги, какие после меня заведут контент-менеджеры. Раз так, то и сравнивать их названия не могу, но проблему свою я решил через цикл. Показанный вами последний вариант тоже обязательно испробую. )

    я не могу заранее знать те слуги, какие после меня заведут контент-менеджеры.

    Их и не нужно знать 🙂 Их можно получить, например, из $_SERVER.

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