2016-08-31 2 views
0

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

Вот как код, который делает мою страницу автора пользовательских

<?php get_header(); ?> 
<?php get_header(); ?> 
<div class="mh-wrapper clearfix"> 
    <div id="main-content" class="mh-content"> 

    <?php 
     mh_before_page_content(); 
     mh_magazine_lite_page_title(); 
     ?> 

    <p><img style="border-bottom:3px solid black;" src="http://chaseonair.com/wp-content/themes/theme-andrews/images/chase-blog-header.jpg"></p> 

    <?php 
     if (category_description()) { ?> 

     <?php 
     } 
     if (is_author()) { 
      mh_magazine_lite_author_box(); 
     } 
     if (have_posts()) { 
      while (have_posts()) : the_post(); 
       get_template_part('content', 'loop'); 
      endwhile; 
      mh_magazine_lite_pagination(); 
     } else { 
      get_template_part('content', 'none'); 
     } ?> 
    </div> 
    <?php get_sidebar(); ?> 
</div> 
<?php get_footer(); ?> 

Я посмотрел в Интернете и нашел этот

query_posts($query_string . "&cat=-1"); 

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

Любая помощь будет оценена по достоинству.

ответ

0

Используйте фильтр pre_get_posts для того чтобы достигнуть этого:

<?php 
    add_action('pre_get_posts', 'exclude_category_from_author_pages'); 

    function exclude_category_from_author_pages($query) { 
     if($query->is_main_query() && $query->is_author('jack')) { 
      $query->set('cat', '-4'); 
     } 
     else if($query->is_main_query() && $query->is_author('john')) { 
      $query->set('cat', '-5'); 
     } 
     else if($query->is_main_query() && $query->is_author('steve')) { 
      $query->set('cat', '-7'); 
     } 
    } 
?> 

Обратите внимание, что вы можете также использовать $query->is_author(8) где 8 является идентификатор пользователя с ником «джон»

+0

Это не работает для меня. Где именно я должен разместить этот код? –

+0

Поместите его в нижней части функции.php вашей темы. Просто не забудьте заменить «4» на идентификатор фактической категории, который необходимо исключить. – shariqkhan

+0

Вот эта проблема с этим. У меня есть один автор, который пишет записи в категории A и B. Я хочу исключить эту категорию B со своей страницы архивного архива. Затем у меня есть другой автор, который пишет сообщения для категорий C, D, E & F, и мне нужно исключить категорию E от этого автора. Есть ли код, который я могу использовать прямо на странице архива произвольного автора, которую я создал? Я хотел бы иметь возможность контролировать исключение категорий для каждого отдельного автора. –