Я написал этот PHP-код для размещения шаблона страницы Wordpress:
<?php
query_posts('showposts=10&cat=7');
while (have_posts()) : the_post();
?>
<li class="img-slider">
<?php the_content(); ?>
</li>
<?php endwhile; ?>
Когда я просматриваю страницу, я не вижу никакого результата, а правая панель браузера продолжает уменьшаться. Я понимаю, что код создает бесконечный цикл. Где я ошибаюсь?
благодаря
Во-первых, вы не должны использовать 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
Без дополнительной информации я бы сказал, что в каждом цикле оператора while
функция возвращает первую строку данных? Таким образом, каждый раз, когда цикл while выполняется, вы снова вызываете функцию, которая снова и снова возвращает одну и ту же строку без фактического повторения в результирующем наборе.
Вы должны использовать оператор 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; ?>