В то время как цикл создает бесконечный цикл

-1

Я написал этот PHP-код для размещения шаблона страницы Wordpress:

<?php 
query_posts('showposts=10&cat=7'); 
while (have_posts()) : the_post(); 
?> 

<li class="img-slider"> 
    <?php the_content(); ?> 
</li> 
<?php endwhile; ?> 

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

благодаря

Теги:

3 ответа

1

Во-первых, вы не должны использовать query_posts. Он слишком инвазивный для простых циклов и беспорядок со всем WP_Query. Также showposts должны быть posts_per_page.

Во-вторых, трудно оценить, что это проблема без дополнительного контекста. Возможно, вы можете использовать всю свою страницу и изменить ее на свой вопрос. Мое предположение - это цикл в цикле и должен останавливаться как 100 сообщений. (10 X 10), но если он перезагрузится где-нибудь еще, если бы очень хорошо обойтись бесконечно!

Вместо этого используйте этот код для создания циклов:

$custom_query = new WP_Query( 'posts_per_page=10' );

if($custom_query->have_posts()) :

    while ( $custom_query->have_posts() ) : $custom_query->the_post();

        //global $post; // for stuff like $post->post_name

        // Post stuff here
        // the_title();

    endwhile;

endif;
// Reset Post Data
wp_reset_postdata();

Посмотрите на WordPress codex для более подробной информации. http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

  • 0
    Спасибо, но я попробовал это решение и не работает.
  • 0
    Там должно быть что-то на самой странице, или, возможно, что-то глубоко в теме, что делает его не завершить цикл пост. Пожалуйста, поделитесь с нами большим количеством кода через pastebin, чтобы лучше понять, где может быть проблема. Благодарю.
Показать ещё 1 комментарий
0

Без дополнительной информации я бы сказал, что в каждом цикле оператора while функция возвращает первую строку данных? Таким образом, каждый раз, когда цикл while выполняется, вы снова вызываете функцию, которая снова и снова возвращает одну и ту же строку без фактического повторения в результирующем наборе.

0

Вы должны использовать оператор if в своем цикле:

<?php 
query_posts('showposts=10&cat=7'); 
if ( have_posts() ): while ( have_posts() ) : the_post(); 
?> 

<li class="img-slider"> 
    <?php the_content(); ?> 
</li> 
<?php endwhile; endif; ?> 
  • 0
    Спасибо, но результат тот же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню