카테고리 템플릿 내에서 카테고리 ID 가져 오기


22

템플릿 내에서 고양이 ID를 어떻게 얻습니까? 매우 중요합니다. 이름이 같은 여러 고양이가 있기 때문에 이름으로 할 수 없습니다. 슬러그 만 다릅니다. 슬러그를 얻는다면 괜찮습니다. 그러나 내가 말했듯이 : 나는 고양이 제목을 사용할 수 없습니다 .....

답변:


40

$wp_query->get_queried_object()"현재 쿼리 된 개체"를 제공합니다. 카테고리 아카이브에서 이것은 카테고리 객체이고, 저자 페이지에서 이것은 저자이고, 단일 포스트에서 이것은 포스트 자체입니다. ... 글쎄, 당신은 아이디어를 얻습니다. ID 만 원하면을 사용할 수도 있습니다 $wp_query->get_queried_object_id().


9

내 검색을 바탕으로 이것을 사용해야합니다.

$category = get_queried_object();
echo $category->term_id;

나는 당신이 왜 그것이 도움이되는지 설명 하지 않고 , 이것이 도움이된다고 설명 하기 때문에 공감대를 받았다고 가정합니다 . 해당 함수의 소스를 검사하고 결과를 편집 한 결과를 답변에 추가 할 수 있습니다. 힌트 : 댓글이 답변보다 길어야하는 경우 댓글이어야합니다. :)
kaiser

7

음, 아직 댓글을 달 수 없지만 VicePrez의 답변이 효과가 있습니다. 다음은 카테고리 아카이브 페이지에서 잘 작동합니다 (아마도 에코 이외의 작업을 원할 수도 있음).

<?php
$category = get_the_category(); 
echo $category[0]->cat_ID;
?>

편집 : 스크래치, 그것은 게시물이없는 카테고리를 발견 할 때까지 나를 위해 일한 다음 주요 카테고리 대신 하위 카테고리를 선택했습니다. 카테고리 템플리트 페이지에서 get_the_category를 사용할 수 없습니다 .


이것은 해당 카테고리 페이지의 모든 게시물에 대한 모든 카테고리를 반환하므로 실행 가능한 솔루션이 아닙니다. 반향 된 결과는 목록에서 최신 게시물의 초기 범주를 반환합니다.
cj5

4

내가 질문을 오해하지 않는 한, 카테고리 ID / 슬러그를 바디 클래스에 추가 할 수도 있다고 생각합니다.

<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?>
<body <?php body_class($cat_ID); ?>>

4

@Jan Fabry의 답변은 실제로 정답입니다. 그 이유는 다음과 같습니다. Wordpress는 게시물에 대해 여러 범주를 허용하므로 실제로 수행하는 작업이 첫 번째 게시물의 첫 번째 범주를 요구하기 때문에 모든 경우에 사용 $category = get_the_category()및 쿼리 $category[0]가 작동하지 않습니다. 카테고리 A, B 및 C가 있다고 가정합니다. 게시물이 하나만 있고 카테고리 A와 B가 있고 B의 카테고리 페이지에 있다면 대신 A의 정보로 끝날 수 있습니다.

그렇기 $category = $wp_query->get_queried_object()때문에 이전 예제에서는 B의 카테고리 페이지에있을 때 항상 B의 정보를 얻을 수 있기 때문에 를 사용하는 것이 좋습니다 .


2

당신은 그렇게 할 수 있습니다 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>';
?>

반환되는 객체의 배열을 봅니다.


'템플릿 안에 고양이 ID를 어떻게 얻습니까?'라는 질문은 다른 해석에 열려 있습니다. 단일 게시물 템플릿 내에서 옳습니다. 루프 내에서 작동하여 단일 게시물의 카테고리를 얻습니다. 그러나 get_the_category()카테고리 ID를 얻기 위해 카테고리 아카이브 페이지에서 작동하지 않으며 결과는 임의적입니다.
Michael

@ 마이클 참 말. @Jan은 특정 상황과 관련하여 더 적절한 대답을 한 것으로 보입니다.
VicePrez

1
get_the_category()category.php에서 작동합니다
Lea Cohen

0
$category = get_category( get_query_var( 'cat' ) );

$cat_id = $category->cat_ID;

$catname=explode(",",get_category_parents($cat_id,'',','));
print_r($catname);

1
이것이 문제를 해결할 수있는 이유 를 설명하십시오 . 코드 스 니펫은 답이 아닙니다.
fuxia

0

위의 예제는 대부분 작동하지만 다른 범주의 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 (,) 연산자를 사용할 때는 분명히 고려해야 할 사항이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.