WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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();

Список изменений

С версии 1.0.0 Введена.

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

<?php
function get_cat_ID( $cat_name ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
	$cat = get_term_by( 'name', $cat_name, 'category' );
	if ( $cat ) {
		return $cat->term_id;
	}
	return 0;
}

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

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

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

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

    -1
    Ответить28.Ноя.2013 в 20:42 #
    • Kama7641

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

      Ответить28.Ноя.2013 в 21:27 #
  • CanaBeasT64 bezvreda.com

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

    get_query_var('cat');
    1
    Ответить22.Июн.2014 в 21:08 #
    • Kama7641

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

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

      Ответить23.Июн.2014 в 04:49 #
      • CanaBeasT64 bezvreda.com

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

        Ответить23.Июн.2014 в 11:25 #
        • Kama7641

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

          $GLOBALS['cat']
          1
          Ответить23.Июн.2014 в 15:29 #
          • CanaBeasT64 bezvreda.com

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

            Ответить10.Сен.2014 в 12:18 #
  • Андрей

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

    Ответить17.Ноя.2014 в 13:33 #
    • Kama7641

      Зарегистрируйте меню и выведете его в шаблоне с использованием условного тега 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
      Ответить17.Ноя.2014 в 22:18 #
  • 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
    Ответить07.Янв.2015 в 03:01 #
  • @ Степа

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

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

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

    Ответить03.Мар.2016 в 18:57 #
    • Kama7641

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

      Ответить03.Мар.2016 в 23:35 #
      • @ Степа

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

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

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

        Ответить04.Мар.2016 в 16:54 #
Здравствуйте, !     Войти . Зарегистрироваться