2014-05-25 6 views
2

У меня есть петля запросов wp. Я хочу проверить, принадлежит ли сообщение некоторым категориям. Я могу получить категорию, используя the_category(). Я пробовалПроверить категорию в петле wp

if(the_category()==`car`){do somthing} 

и как отодвинуть все остальные должности, кроме категории автомобилей, после всех категорий «автомобиль».

+0

вам нужно, чтобы показать сообщения от 'car' категории первой, а затем все остальные должности, которые не принадлежат к' car' Do категория? –

+0

@PieterGoosen yes.exactly –

ответ

1

the_category() возвращает много категорий.

Вы могли бы хотеть попробовать get the category

$categories = get_the_category(); 
foreach($categories as $cat) { 
    if($cat->cat_name == 'car') { 
    // do something 
    } 
} 
+0

и как нажать все остальные сообщения, кроме категории автомобилей, после всех категорий «автомобиль». см. обновленный вопрос –

+0

Я не могу повторить цикл. когда try echo gettype (the_category()), он показывает NULL.but echo the_category() имеет выход. –

1

Вы можете запустить два запроса здесь. Первый запрос получает все сообщения из авторегламента. Второй запрос получает все другие сообщения, кроме сообщений из категории car. Просто не забудьте изменить CATID FOR CAR с идентификатором категории автомобиля и не забудьте знак минус перед идентификатором во втором запросе. Знак минус означает исключение.

Вы можете прочитать об этом в Codex: WP_Query

$do_not_duplicate = array(); 

$args = array(
    'cat' => CATID FOR CAR 
); 

$carargs = new WP_Query($args); 

if($carargs->have_posts()): 

    while ($carargs->have_posts()) : $carargs- >the_post(); 
    $do_not_duplicate[] = $post->ID; 

<----your loop----> 

    endwhile; 

endif; 

wp_reset_postdata(); 


$args2 = array(
    'cat' => -CATID FOR CAR, 
    'post__not_in' => $do_not_duplicate 
); 

$restargs = new WP_Query($args2); 

if($restargs->have_posts()): 

    while ($restargs->have_posts()) : $restargs- >the_post(); 
    $do_not_duplicate[] = $post->ID; 

<----your loop----> 

    endwhile; 

endif; 

wp_reset_postdata(); 
+0

Я сделал это. но проблема с разбивкой по страницам. Я не могу использовать разбиение на страницы, если существует несколько циклов –

+0

, и этот вопрос тоже можно найти здесь http://wordpress.stackexchange.com/questions/145556/how-to-show-the-posts-of-some-category -first-and-then-all-other –

+0

Вам нужно разбивать на страницы как запросы, так и второй запрос? –

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