我需要每個類別的WordPress的將只顯示自己的帖子,而不是它的子類別。這是如何完成的?類別頁面不應顯示子類別
我需要在子類別中的文章只出現在他們的子類別中,而不是出現在父類別中(我只想看到標記爲該父類別的文章 但是,在例如,如果我有類別「汽車」,並在其下面,子類別「菲亞特」,福特「,」本田「 ,我看到菲亞特在子類別「菲亞特」和父類別「汽車」中的帖子。
我們該如何解決這個問題?
我需要每個類別的WordPress的將只顯示自己的帖子,而不是它的子類別。這是如何完成的?類別頁面不應顯示子類別
我需要在子類別中的文章只出現在他們的子類別中,而不是出現在父類別中(我只想看到標記爲該父類別的文章 但是,在例如,如果我有類別「汽車」,並在其下面,子類別「菲亞特」,福特「,」本田「 ,我看到菲亞特在子類別「菲亞特」和父類別「汽車」中的帖子。
我們該如何解決這個問題?
利用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;
}
});
只適用於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 ;
}
非常感謝您的回答。但是,在functions.php文件中使用此代碼時,我嘗試進入類別頁面時出現空白屏幕。 – David 2015-02-11 08:17:31
謝謝。這工作! 不幸的是,我不能投票,因爲我的「信譽分數」不夠高,但一旦它出現,我會爲此答案投票。謝謝。這工作! – David 2015-02-11 08:13:59