2012-11-07 63 views
1

有沒有一種方法可以使用條件來檢查頁面是否是特定類別的子類別?如何檢查Wordpress中類別x的子類別?

即:在我的「category.php」我目前有:

<?php } else if (is_category('blog')) { ?> 

這是爲了渲染根據不同的看法的類別頁面的用戶是。

是否有可能做類似的事情?

<?php } else if (is_sub_category_of('blog')) { ?> 

回答

0

您可以查看您當前的類別父級ID是否與「博客」類別ID匹配。如果是這樣,您當前的類別是「博客」的子類別。

$current_cat = get_query_var("category"); 
$cat = get_term_by('slug',$current_cat,"category"); 
$blog = get_term_by('slug',"blog","category"); 


if($cat->parent == $blog->ID){ /*your code */ } 

此代碼將完成您描述的功能。

+1

對不起,我不明白? –

1

老問題,但我偶然發現了這個昨晚,我不得不爲自己找到答案。

這是我category.php頁:

$category = get_the_category(); 

if(isset($category[1]) && $category[1]->slug === 'catagory-you-want') { 

    // Do stuff if it's a child of "Category You Want" 
    // You can use $category[1]->cat_ID to check which category instead 

} 

目前的子類別是$category0位置。

如果「你想要的類別」有一個父類別並且你不知道它,這將會更困難。

1

雖然很古老,但我創造了完美的解決方案。

添加到您的functions.php文件:

/** check if the current category is a child of a given category **/ 
function current_cat_is_sub_of($parent = ''){ 
    global $wp_query; 
    $cat = $wp_query->get_queried_object(); 

    if (! isset($wp_query)) { 
     _doing_it_wrong(__FUNCTION__, __('Conditional query tags do not work before the query is run. Before then, they always return false.'), '3.1.0'); 
     return false; 
    } 
    elseif($cat->parent!=0 && $cat->parent == $parent){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

然後你可以使用它的各種方式。例如,要更改給定類別下所有子類別頁面中帖子的顯示順序:

/** order posts under category 123 from new to old **/ 
function order_digital_posts($query){ 
    if (current_cat_is_sub_of('THE PARENT CATEGORY ID') && $query->is_main_query()) { 
     $query->set('order', 'ASC'); 
    } 
} 
add_action('pre_get_posts', 'order_digital_posts'); 

享受! Itamar