답변:
음, 아직 댓글을 달 수 없지만 VicePrez의 답변이 효과가 있습니다. 다음은 카테고리 아카이브 페이지에서 잘 작동합니다 (아마도 에코 이외의 작업을 원할 수도 있음).
<?php
$category = get_the_category();
echo $category[0]->cat_ID;
?>
편집 : 스크래치, 그것은 게시물이없는 카테고리를 발견 할 때까지 나를 위해 일한 다음 주요 카테고리 대신 하위 카테고리를 선택했습니다. 카테고리 템플리트 페이지에서 get_the_category를 사용할 수 없습니다 .
내가 질문을 오해하지 않는 한, 카테고리 ID / 슬러그를 바디 클래스에 추가 할 수도 있다고 생각합니다.
<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?>
<body <?php body_class($cat_ID); ?>>
@Jan Fabry의 답변은 실제로 정답입니다. 그 이유는 다음과 같습니다. Wordpress는 게시물에 대해 여러 범주를 허용하므로 실제로 수행하는 작업이 첫 번째 게시물의 첫 번째 범주를 요구하기 때문에 모든 경우에 사용 $category = get_the_category()
및 쿼리 $category[0]
가 작동하지 않습니다. 카테고리 A, B 및 C가 있다고 가정합니다. 게시물이 하나만 있고 카테고리 A와 B가 있고 B의 카테고리 페이지에 있다면 대신 A의 정보로 끝날 수 있습니다.
그렇기 $category = $wp_query->get_queried_object()
때문에 이전 예제에서는 B의 카테고리 페이지에있을 때 항상 B의 정보를 얻을 수 있기 때문에 를 사용하는 것이 좋습니다 .
당신은 그렇게 할 수 있습니다 get_the_category()
.
예:
<?php
$category = get_the_category();
// use this to echo the slug
echo $category[0]->slug;
// use this to echo the cat id
echo $category[0]->cat_ID;
// if you've got multiple categories you can run a foreach loop like so
foreach ( $category as $cat ) :
echo '<li>' . $cat->name . '</li>';
endforeach;
?>
당신은 사용할 수 있습니다 :
<?php
echo '<pre>';
print_r($category);
echo '</pre>';
?>
반환되는 객체의 배열을 봅니다.
get_the_category()
카테고리 ID를 얻기 위해 카테고리 아카이브 페이지에서 작동하지 않으며 결과는 임의적입니다.
get_the_category()
category.php에서 작동합니다
$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID;
$catname=explode(",",get_category_parents($cat_id,'',','));
print_r($catname);
위의 예제는 대부분 작동하지만 다른 범주의 NONE (작성시 WP 버전 3.6) 을 여러 범주로 사용하는 경우 "cat"또는 "category_name"으로 전달 된 모든 범주를 가져옵니다.
내가 찾은 유일한 방법은 데이터를 가져 오는 것입니다.
$wp_query->query['category_name']
어떤 이유로 든 get_query_var( 'category_name' )
첫 번째 범주 만 반환 하는 다른 값을 반환합니다.
여러 카테고리를 사용 explode
하는 경우 카테고리 슬러그 배열을 얻는 것과 같은 기능을 사용해야합니다 . 그러면 모든 ID를 가져옵니다.
<?php
global $wp_query;
//grab all categories from query string (if using `category_name`)
$category_slugs_array = explode("+",esc_attr($wp_query->query['category_name']));
$categories = array();
$category_ids = array();
//loop through all the slugs
foreach($category_slugs_array as $category_slug)
{
//get category object using slug
$category = get_category_by_slug( $category_slug );
//check to make sure a matching category has been found
if(isset($category->cat_ID))
{
$categories[] = $category;
$category_ids[] = $category->cat_ID;
}
}
var_dump($categories); //array of categories
var_dump($category_ids); //array of category IDs
?>
AND (+) 또는 OR (,) 연산자를 사용할 때는 분명히 고려해야 할 사항이 있습니다.