外部循环使用global
变量$wp_query
. query_posts
更改中的数据global
变量$wp_query
. 自从你跑步以来query_posts
在循环的每次迭代中,重击$wp_query
每次,一个无限循环几乎是不可避免的,还有其他不必要的行为。这就像试图数到100,但每次你得到一个数字,你必须从其他一些随机数开始。它不起作用。
解决办法是不要摔$wp_query
您可以遵循本网站的座右铭:不要使用query_posts
, 曾经
相反,创建一个新的WP_Query
对象如中所示this example from the Codex:
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo \'<li>\' . get_the_title() . \'</li>\';
}
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
就你而言,我不能百分之百确定你的目标是什么,但要显示所有类别的帖子,应该这样做:
$cats = get_categories();
foreach ($cats as $cat) {
$catposts = new WP_Query(
array(
\'cat\' => $cat->cat_ID,
\'ignore_sticky_posts\' => true,
\'posts_per_page\' => -1
)
); ?>
<h2><?php echo $cat->cat_name; ?></h2>
<ul><?php
while ($catposts->have_posts()) {
$catposts->the_post(); ?>
<li><?php the_title(); ?></li><?php
} ?>
</ul><?php
}
现在,我想您可能只想显示与外部循环中当前帖子相同类别中其他帖子的链接。因为你不想
get_categories
, 你想要的
wp_get_post_categories
if (have_posts()) {
while (have_posts()) {
the_post();
$cats = wp_get_post_categories($post->ID,array(\'fields\' => \'all\'));
foreach ($cats as $cat) {
$catposts = new WP_Query(
array(
\'cat\' => $cat->term_id,
\'ignore_sticky_posts\' => true,
\'posts_per_page\' => -1
)
); ?>
<h2><?php echo $cat->name; ?></h2>
<ul><?php
while ($catposts->have_posts()) {
$catposts->the_post(); ?>
<li><?php the_title(); ?></li><?php
} ?>
</ul><?php
}
}
}