it-swarm-ko.tech

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

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

20
Laura

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

39
Jan Fabry

내 수색을 기반으로해야합니다 :

$category = get_queried_object();
echo $category->term_id;
7
Mahdi Majidzadeh

음, 아직 논평 할 수 없지만 VicePrez의 대답은 효과가 있습니다. 다음은 카테고리 아카이브 페이지에서 잘 작동합니다 (다만 반향 이외의 다른 작업을 원할 수도 있습니다).

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

EDIT : 게시물이없는 범주를 찾을 때까지는 저에게 효과적이었습니다. 그런 다음 주 범주 대신 하위 범주를 선택했습니다. 카테고리 템플릿 페이지에있는 get_the_category에 의존 할 수 없습니다.

7
Stephen Cronin

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

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

4
The WebMacheter

질문을 오해하지 않는 한, body 클래스에 id/slug 카테고리를 추가 할 수도 있습니다.

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

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>';
?>

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

2
VicePrez
$category = get_category( get_query_var( 'cat' ) );

$cat_id = $category->cat_ID;

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

위의 예제의 대부분은 작동하지만 여러 카테고리 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 (,) 연산자를 사용할 때 몇 가지 고려 사항이 필요합니다.

0
acSlater