WordPress два цикла по индексу - PullRequest
0 голосов
/ 29 февраля 2012

Что я пытаюсь сделать, это запустить два отдельных цикла на моей странице индекса в Wordpress:

Тот, который не имеет сообщений из категории 5

И

Тот, который имеет только сообщения из категории 5

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

Вот код:

Петля 1:

<?php $blogPreview = new WP_Query('cat=-5'); ?>
<?php if ( $blogPreview->have_posts() ) : ?>
    <?php while ( $blogPreview->have_posts() ) : $blogPreview->the_post(); ?>
        <?php the_post(); ?>
        <?php get_template_part( 'content-index', get_post_format() ); ?>
    <?php endwhile; ?>
<?php else : ?>
    Sorry, but there are currently no posts in the blog!
<?php endif; ?>
<?php wp_reset_query(); ?>

Цикл 2 (чуть ниже цикла 1 в моей разметке):

<?php $testimonials = new WP_Query('cat=5'); ?>
<?php if ( $testimonials->have_posts() ) : ?>
    <?php while ( $testimonials->have_posts() ) : $testimonials->the_post(); ?>
        <?php the_post(); ?>
        <?php get_template_part( 'content-index-testimonials', get_post_format() ); ?>
    <?php endwhile; ?>
<?php else : ?>
     Sorry, but there are currently no posts in the blog!
<?php endif; ?>
<?php wp_reset_query(); ?>

Есть идеи? Заранее спасибо

Хорошо, так что это было исправлено удалением "the_post ()" из циклов.

Теперь я не могу исключить эту категорию для своей жизни, я попробовал все следующее:

<?php $blogPreview = new WP_Query('cat=-5'); ?>
<?php $blogPreview = new WP_Query(array('category__not_in'=>5)); ?>
<?php $blogPreview = new WP_Query('category__not_in'=>array(5)); ?>

все не в состоянии это сделать.

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

В обоих циклах удалите "the_post ();" потому что вы уже вызвали $ testimonials-> the_post ();

<?php $testimonials = new WP_Query('cat=5'); ?>
<?php if ( $testimonials->have_posts() ) : ?>
    <?php while ( $testimonials->have_posts() ) : $testimonials->the_post(); ?>
        <?php // i.e. You can call here, the_title(); ?>
        <?php get_template_part( 'content-index-testimonials', get_post_format() ); ?>
    <?php endwhile; ?>
<?php else : ?>
    <p>Sorry, but there are currently no posts in the blog!</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
3 голосов
/ 29 февраля 2012

Не уверен, но я подозреваю, что это может быть связано с вызовом

<?php the_post(); ?>

после того, как вы уже вызвали его для WP_Query объектов (например, $testimonials->the_post();).Я думаю, что вызов будет использовать глобальное значение $wp_query и перезаписать значения, установленные в вашем предыдущем вызове.Попробуйте удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...