2012-01-04 3 views
0

У меня есть список сообщений на моей домашней странице, где отображаются все сообщения в хронологическом порядке (DESC). Я хочу исключить из этого списка сообщения из определенной категории. Как мне это сделать? Мой запрос ...Исключить посты из списка

<ul class="home-news"><?php 
         $args = array('numberposts' => 5, 'order'=> 'DESC', 'orderby' => 'post_date'); 
         $postslist = get_posts($args); 
         foreach ($postslist as $post) : setup_postdata($post); ?> 
          <li> 
          <a href="<?php the_permalink() ?>"> 
           <?php the_title(); ?> 
           <span>Posted on <?php the_date(); ?></span> 
          </a> 
          </li> 
         <?php endforeach; ?> 
        </ul> 

ответ

0

Решение 1

Добавьте следующие строки в args массива:

$args = array('category' => '-id', ...); 

Где id это категория идентификатор категории, которую вы хотите исключить. Это решение не уменьшит количество запрошенных должностей.

Решение 2

Добавьте следующую строку в начале внутренней части foreach цикла:

<?php 
    $category = get_the_category(); 
    if ($category[0] -> cat_name == 'exclude_category_name') continue; 
?> 

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

+0

Это просто исключает сообщения из «События» из 5 сообщений, которые изначально были вызваны. Я бы хотел, чтобы исключенные должности были заменены в списке более старыми сообщениями из подходящих категорий. –

+0

Поскольку ваш '$ postlist' построен из вызова функции' get_posts() ', не будет возможности добавить новые записи в' $ postlist' с кодом, который у вас здесь есть. Вам нужно будет изменить, как работает 'get_posts()' – Julien

+0

Приветствия, мне удалось выполнить запрос к моим требованиям, используя следующий код [link] (http://justpaste.it/o0y) –

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