2015-02-09 3 views
1

Мне нужно, чтобы каждая категория Wordpress отображала только свои собственные сообщения, а не те, что были в его дочерних категориях. Как это делается?Категория страницы не должна отображать дочерние категории

Мне нужны сообщения, которые находятся в подкатегориях, чтобы отображаться только в их подкатегориях и не отображаться в родительской категории (где я хочу видеть только сообщения, помеченные для этой родительской категории. Однако в родительская категория Я получаю все должности, которые помечены как отображаемые в подкатегории этой родительской категории.

Например, если у меня есть категория «автомобили» и под ним подкатегории «Fiat», Ford »,« Honda », , я вижу сообщения Fiat как в подкатегории «Fiat» и в родительской категории «Автомобили».

Как мы можем исправить это?

ответ

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

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

Смежные вопросы