2015-02-09 58 views
1

我需要每個類別的WordPress的將只顯示自己的帖子,而不是它的子類別。這是如何完成的?類別頁面不應顯示子類別

我需要在子類別中的文章只出現在他們的子類別中,而不是出現在父類別中(我只想看到標記爲該父類別的文章 但是,在例如,如果我有類別「汽車」,並在其下面,子類別「菲亞特」,福特「,」本田「 ,我看到菲亞特在子類別「菲亞特」和父類別「汽車」中的帖子。

我們該如何解決這個問題?

回答

1

利用parse_tax_query filter的排除當前類別的兒童

你可以嘗試這樣的事情:(需要PHP 5.3 +

add_filter('parse_tax_query', function ($query) { 
    if ( 
     ! is_admin() 
     && $query->is_main_query() 
     && $query->is_category() 
    ) { 
     $query->tax_query->queries[0]['include_children'] = 0; 
    } 
}); 
+0

謝謝。這工作! 不幸的是,我不能投票,因爲我的「信譽分數」不夠高,但一旦它出現,我會爲此答案投票。謝謝。這工作! – David 2015-02-11 08:13:59

0

只適用於WordPress> = 3.3

在你的functions.php的主題文件:

add_filter('pre_get_posts','hide_subcategories_function',20,1); 

function hide_subcategories_function($the_query) { 
    if(get_bloginfo('version') >= 3.3 && function_exists('is_main_query')) { 

     if(!$the_query->is_admin && !$the_query->is_preview && $the_query->query_vars['suppress_filters'] == false && $the_query->is_category && $the_query->is_main_query()) { 

      $cat = get_term_by('slug', $the_query->query_vars['category_name'], 'category'); 

      $the_query->set('category__in',array($cat->term_id)); 

     } 

    } 
    return $the_query ; 
} 
+0

非常感謝您的回答。但是,在functions.php文件中使用此代碼時,我嘗試進入類別頁面時出現空白屏幕。 – David 2015-02-11 08:17:31

相關問題