WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Купить персональные IPV4 и IPV6 прокси

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.2.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вязанные функции

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

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

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

    -1
    Ответить5.6 лет назад #
    • Kama7538

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

      Ответить5.6 лет назад #
  • CanaBeasT64 bezvreda.com

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

    get_query_var('cat');
    1
    Ответить5.1 лет назад #
    • Kama7538

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

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

      Ответить5.1 лет назад #
      • CanaBeasT64 bezvreda.com

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

        Ответить5 лет назад #
        • Kama7538

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

          $GLOBALS['cat']
          1
          Ответить5 лет назад #
          • CanaBeasT64 bezvreda.com

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

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

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

    Ответить4.7 года назад #
    • Kama7538

      Зарегистрируйте меню и выведете его в шаблоне с использованием условного тега 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
      Ответить4.7 года назад #
  • 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
    Ответить4.5 года назад #
  • @ Степа

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

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

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

    Ответить3.4 года назад #
    • Kama7538

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

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

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

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

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

        Ответить3.4 года назад #
Здравствуйте, !     Войти . Зарегистрироваться