问题不在于循环不工作。问题是您的代码没有按您希望的方式执行循环。
PHP不符合您的意思。它完全按照你说的做。与大多数计算机语言一样,它只是一个速度极快、愚蠢得令人难以置信的列表处理器。
当您删除query_posts()
调用您需要的其他内容来替换它,以告诉PHP您想要什么。PHP不只是“知道”任何东西。
这里有一个解决方案。在模板文件的底部,替换以下内容:
<!-- START footer -->
<?php get_footer(); ?>
使用此选项:
<!-- START footer -->
<?php
get_footer();
add_action( \'pre_get_posts\', \'wpse_112282_change_query\' );
function wpse_112282_change_query( $query ) {
if ( $query->is_main_query() ) {
$paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
$query->set( \'post_type\', \'post\' );
$query->set( \'post_status\', \'publish\' );
$query->set( \'paged\', $paged );
}
}
这使用
one recommended way 获取
$paged
并遵循在
query_posts()
呼叫中的第一个参数
query_set()
是查询中等号右侧的值(
=
).
例如post_status=publish
成为:
$query->set( \'post_status\', \'publish\' );
Read more about using the \'pre_get_posts\'
action.