2012-02-10 70 views
1

讓我告訴你的情況先說在WordPress的類別的結構是這樣的如何檢查它是用於WordPress的哪個級別類別?

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循環,並返回一旦父到達。 – 2014-03-19 14:27:08

回答

5

如果你沒有很多類別,你可以嘗試從管理編輯塞,然後在你的頁面,你得到的類別蛞蝓是這樣的:

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

現在,當你編輯類別slu try時,嘗試在它們的級別之後命名它們: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 2012-02-10 10:29:27

+0

Thx :)我用可能的解決方案編輯了我的答案。希望它有效:) – zuzuleinen 2012-02-10 11:11:13

2

非常感謝。這是非常好的,稍微改變你寫的代碼是好的,但它不返回任何值(即$水平),雖然它的計算是正確的。 @zuzuleinen

0

我瀏覽這個網頁幾個月的微小變化,我沒有和它的工作,下面給你的代碼稍有編輯現在很好..

`

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'); 
} 
相關問題