Как получить ID категории по названию категории?

22 июл. 2012 г., 00:18:17
Просмотры: 43.7K
Голосов: 6

У меня есть несколько категорий с одинаковым названием [некоторые из них являются подкатегориями]. И я хочу получить массив ID для определенного названия категории. Я попробовал это:

$term = get_term_by('name', $cat_name, 'category');

но похоже, что get_term_by() возвращает только первый термин, соответствующий запросу.

0
Все ответы на вопрос 2
1
14

Используйте get_terms(), который внутри использует WP_Term_Query. Полный список доступных параметров можно найти в документации к WP_Term_Query::__construct

// Получить *ID терминов*, где имя *совпадает* с "my_name"
$term_ids = get_terms([
    'fields' => 'ids',
    'taxonomy' => 'category',
    'name' => 'my_name',
    'hide_empty' => false,
]);

// Получить *объекты терминов*, где имя *совпадает* с "my_name"
$terms = get_terms([
    'taxonomy' => 'category',
    'name' => 'my_name',
    'hide_empty' => false,
]);

// Получить *объекты терминов*, где имя *содержит* "my_name"
$terms = get_terms([
    'taxonomy' => 'category',
    'name__like' => 'my_name',
    'hide_empty' => false,
]);
22 июл. 2012 г. 02:15:15
Комментарии

Большое спасибо. До вашего ответа я сделал следующее: `$id = array(); $args = array(
'hide_empty' => 0, );

$categories = get_categories( $args );

foreach($categories as $c){ if ($c->name == $cat_name){ $id[] = $c->term_id; } }`

Shimon S Shimon S
22 июл. 2012 г. 14:06:42
0
10

get_cat_ID( $cat_name ) может помочь! Пример:

<?php
     $category_id = get_cat_ID('Название категории');
     $q = 'cat=' . $category_id;
     query_posts($q);
     if (have_posts()) : while (have_posts()) : the_post();

     the_content();

     endwhile; endif;
?>

Подробнее!

31 дек. 2012 г. 08:36:58