2012-02-10 1 views
1

날 시나리오 처음 워드 프레스의 카테고리의 구조는 내가 카테고리의 수준이 무엇을 확인해야 지금이어떻게 확인 워드 프레스에 대한 어떤 레벨 카테고리?

Level 1: Top 
Level 2: -Nextme_1 
Level 3: --Nextme_2 
     --Nextme_3 
Level 4: ---Nextme_4 
     ---Nextme_5 

처럼 말하는 당신이 말해주지? 레벨 3의 카테고리를 잡으면 다른 템플릿을 사용해야하고 레벨 4이면 다른 템플릿을 사용해야합니까?

아무도 나에게 약간의 힌트를 줄 수 있습니까?

감사
라훌

+0

이 절차는 CSV 2 POST에 작성하십시오. 해결책은 훌륭해 보이지만 부모가 도달하면 while 루프를 사용하고 돌아올 것입니다. –

답변

5

당신이 관리자에서 자신의 슬러그를 편집하려고 할 수있는 많은 종류가없는 한 다음 페이지에 당신이 카테고리 슬러그 이런 식으로 얻을 경우

if (is_category()) { 
    $cat = get_query_var('cat'); 
    $category = get_category($cat); 
    echo 'your slug is '. $category->slug; 
} 

을 카테고리를 편집 할 때, 레벨 다음에 이름을 지정하십시오 : cat-lvl-1, cat-lvl-2. 그런 다음 페이지에 일부 PHP는 문자열 함수를 사용하여 카테고리 슬러그에서 숫자를 추출 한 다음 해당 번호 확인 :

if ($category->slug == 1) { 
//load the template for the category of level 1 
} 
if ($category->slug == 2) { 
    //load the template for the category of level 2 
    } 

등등을.

나중에 편집 : 이 시도 :

function get_level($category, $level = 0) 
{ 
    if ($category->category_parent == 0) { 
     return $level; 
    } else { 
     $level++; 
     $category = get_category($category->category_parent); 
     get_level($category, $level); 
    } 

} 

if (is_category()) { 
    $cat = get_query_var('cat'); 
    $yourcat = get_category($cat); 

    echo get_level($yourcat); 
} 
+0

감사하지만 불행히도 나는 많은 범주가 있습니다. 이것은 할 수있는 좋은 방법이었습니다. 다시 한번 감사합니다. – Rahul

+0

Thx :) 가능한 해결책으로 내 대답을 편집했습니다. 희망이 작동합니다 :) – zuzuleinen

2

덕분에 많이. 이것은 약간의 변경으로 훌륭합니다. 작성한 코드는 괜찮지 만 그 값은 반환하지 않습니다. (i, e $ 수준) 올바른 계산이지만. 나는이 페이지 개월 방문

0

@zuzuleinen 사소한 내가 한 변화와 아래 당신의 코드에 약간의 편집으로 이제 잘 작동 ..

`

function get_level($category, $level = 0) 
{ 
    if ($category->category_parent == 0) { 
     return $level; 
    } else { 
     $level++; 
     $category = get_category($category->category_parent); 
     return get_level($category, $level); 
    } 

} 

if (is_category()) { 
    $cat = get_query_var('cat'); 
    $yourcat = get_category($cat); 

    echo get_level($yourcat); 
} 

`

감사합니다 뒤로. 나는 오늘 다시 돌아 왔고, 위의 해결책에 대한 위로 화살표는 여전히 파고 갔다. 좋은 해결책이지만, Wordpress는 종종 더 좋거나 가까운 것을 제공합니다. 이 기능은 라훌으로 수행

get_category_parents()

은 기본적으로 입력했다. 그것은 또한 가장 논리적 인 접근법 인 것처럼 보이는 자체를 호출합니다. 그래서 이것이 Rahul이 이것에 관해 나에게서 한 가지를 얻는 이유입니다. 다음 계산 또는 우리가 1

function get_category_parents($id, $link = false, $separator = '/', $nicename = false, $visited = array()) { 
    $chain = ''; 
$parent = get_term($id, 'category'); 
if (is_wp_error($parent)) 
    return $parent; 

if ($nicename) 
    $name = $parent->slug; 
else 
    $name = $parent->name; 

if ($parent->parent && ($parent->parent != $parent->term_id) && !in_array($parent->parent, $visited)) { 
    $visited[] = $parent->parent; 
    $chain .= get_category_parents($parent->parent, $link, $separator, $nicename, $visited); 
} 

if ($link) 
    $chain .= '<a href="' . esc_url(get_category_link($parent->term_id)) . '" title="' . esc_attr(sprintf(__("View all posts in %s"), $parent->name)) . '">'.$name.'</a>' . $separator; 
else 
    $chain .= $name.$separator; 
return $chain; 

}

0

당신을 분리가 사용 된 횟수를 계산하고 추가 할 수 있습니다 가정) (을 폭발 카테고리의 문자열을 반환 $ 링크를 사용하지 마십시오 get_ancestors() 함수를 호출하여 an array containing the parents of the given object을 얻을 수 있습니다. 그렇다면 to count elements이 필요합니다.

function get_the_level($id, $type = 'category') { 
    return count(get_ancestors($id, $type)); 
} 

if(is_category()) { 
    $level = get_the_level($cat); 
} 
elseif(is_product_category()) { 
    $level = get_the_level($wp_query->get_queried_object()->term_id, 'product_cat'); 
}