WordPress как на ладони
wordpress jino

get_cat_ID() WP 1.0.0

Получает ID категории по переданному названию.

Функция возвращает 0, если не удалось получить идентификатор.

Работает на основе: get_term_by()

Хуков нет.

Использование

$cat_id = get_cat_ID( $cat_name );
$cat_name(строка)
Название категории, идентификатор которой нужно получить. По умолчанию General.
По умолчанию: "General"

Примеры

#1. Записи из указанной рубрики

Пример использования этой функции для получения записей из определенной категории при помощи функции query_posts():

$category_id = get_cat_ID('Название категории');

$q = 'cat=' . $category_id;

query_posts( $q );

if( have_posts() ){
	while( have_posts() ){
		the_post();

		the_content();
	}
}

wp_reset_query();

Код get cat ID: wp-includes/category.php WP 4.8.2

<?php
function get_cat_ID( $cat_name ) {
	$cat = get_term_by( 'name', $cat_name, 'category' );
	if ( $cat )
		return $cat->term_id;
	return 0;
}

Cвязанные функции

Из раздела: Рубрики

get_cat_ID 13 комментариев
Полезные 2 Все
  • Кирилл2 cайт: malahov-web.ru

    Надо еще в начале странице (Перед абзацем о том что ф-я запрещена) большими буквами написать что теперь её аналог get_term_by();

    -1
    Ответить3.7 года назад #
    • Kama4489

      Можно было обычно сказать, что ошибка, издеваться совсем не к чему. Убрал сообщение, была ошибка в маркировке функции.

      Ответить3.7 года назад #
  • CanaBeasT65 cайт: bezvreda.com

    Добрый день.
    Искал как просто получить id текущей категории, не передавая имя.
    нашел, решил дополнить.

    get_query_var('cat');
    1
    Ответить3.2 года назад #
    • Kama4489

      Спасибо за дополнение. thank_you

      Тут нужно дописать, что так ID категории можно получить только находясь на архивной странице категории, т.е. отвечающей условию is_category().

      Ответить3.2 года назад #
      • CanaBeasT65 cайт: bezvreda.com

        Ну да, именно это и нужно. Использовал для создания меню, для определенной страницы категории. Через ее имя не особо удобно smile айди получать.

        Ответить3.2 года назад #
        • Kama4489

          Вообще, на таких архивных страницах ID котегории находится в глобальной переменной $cat:

          $GLOBALS['cat']
          1
          Ответить3.2 года назад #
          • CanaBeasT65 cайт: bezvreda.com

            Спасибо. Правлю очередной шаблон. Инфа, как всегда кстати, чета не задумывался про глобальную переменную. Нужно будет вообще ее посмотреть, че там еще полезного вынуть можно smile

            Ответить3 года назад #
  • Андрей

    Kama, подскажи, пожалуйста, а как вывести какой-либо элемент на всех страницах одной рубрики? Мне нужно вывести отдельное меню для одной рубрики, которое будет показываться только в самой этой рубрике.
    Заранее большое спасибо, если сможешь помочь.

    Ответить2.8 года назад #
    • Kama4489

      Зарегистрируйте меню и выведете его в шаблоне с использованием условного тега is_category(). Как-то так:

      // регистрируем меню
      function theme_register_nav_menu() {
      	register_nav_menu( 'my_cat_menu', 'Меню для категории "Нечто"' );
      }
      add_action( 'after_setup_theme', 'theme_register_nav_menu' );
      
      // выводим меню
      if( is_category(5) ){
      	wp_nav_menu( array('theme_location' => 'my_cat_menu', 'menu' => '') );
      }
      1
      Ответить2.8 года назад #
  • seventh

    вот так заработало.

    $cat = get_query_var('cat'); 
    
      $currentCat = 'current_category='.$cat;  
    
      wp_list_categories('depth=-1&title_li=&exclude=1,9&style=list&child_of=3&'.$currentCat);
    1
    Ответить2.6 года назад #
  • Степа @

    В названии категории содержится подобная конструкция "20 — 30" и такого вида код:

    echo get_cat_ID('Всего 20 — 30 мест');

    возвращает не ID существующей категории, а 0 (не удалось получить идентификатор).
    Если "20 — 30" заменить на "20—30", то все работает как надо и ID выводится нужный.
    Как это исправить? В чем может быть проблема?

    Ответить1.5 года назад #
    • Kama4489

      Вы сами ответили на свой вопрос... Это из-за очистки ярлыка наверное... Попробуйте заменить "—" на "-".

      Ответить1.5 года назад #
      • Степа @

        Попробуйте заменить "—" на "-".

        Не помогло, он все равно выводит длинное тире. Я думал может можно как-нибудь экранировать знак или что-то в таком духе. В итоге просто удалил пробел между числами и тире между ними (только это уже не тире тогда, а дефис).

        Спасибо за помощь. У вас клевый сайт.

        Ответить1.5 года назад #

Здравствуйте, !

Ваш комментарий