2013-07-10 3 views
1

Я пытаюсь получить идентификатор категории на странице архива категорий персонализированного типа сообщения. До сих пор я использую код ниже, но он, похоже, не работает. Этот код находится в моем taxonomy-{taxonomy}.php файле.Получить идентификатор категории архива персонализированного типа сообщения

$cat_name = single_cat_title('', false); 
$cat_id = get_cat_ID($cat_name); 

// $cat_name = 'Category Name', which works fine but, 
// $cat_id = 0, which is obviously not the id of the category 

Нужно ли мне что-то делать для получения идентификатора категории пользовательского типа сообщения?

Как примечание стороны, мне это нужно, так что я могу передать идентификатор в функцию get_categories()

$args = array(
    'child_of' => $cat_id, 
    'taxonomy' => 'taxonomy' 
); 

$categories = get_categories($args); 

ответ

3

Есть несколько способов, чтобы получить категорию ID

$category = get_category(get_query_var('cat')); 
$cat_id = $category->cat_ID; 

ИЛИ

$category = get_the_category(); 
$cat_id = $category[0]->cat_ID; // or foreach through 

ИЛИ

if(is_category()) { $cat_ID = get_query_var('cat'); } 

ИЛИ просто

var_dump($wp_query->get_queried_object()) 

даст текущий объект для шаблона, как для запроса на категории архива это объект категории

или даже ни один из них не работал, то здесь пользовательский запрос

global $wpdb; 
$category=$wpdb->get_results("SELECT * FROM `wp_terms` WHERE `name` ='$cat_name'"); 
$category[0]->term_id; 
+0

Я думаю, что последний сделал это. Остальные три не смогли вернуть идентификатор категории. – Phil

1

wp_get_ пост _categories может получить только POST категории не категории таможенного поста, попробуйте вместо этого:

$category = get_the_terms($post->ID, 'custom-taxonomy-here'); //////find custom taxonomy category name 
foreach ($category as $cat){ 
echo $cat->name; 
} 

http://wordpress.org/support/topic/wp_get_post_categories-equivalent-for-custom-taxonomies

+0

Это, кажется, дает список всех категорий на первый пост в списке. – Phil

Смежные вопросы