【发布时间】:2016-12-12 09:12:48
【问题描述】:
我有两个循环在我的页面上运行,一个用于从特定类别中获取一组帖子,然后进一步从自定义帖子类型中获取帖子,但由于某种原因,如果我同时输出它们,第二个循环不会显示并且如果我注释掉第一个,第二个会显示?
我有点不明白为什么?
第一个循环更新
<?php
$post_query = new WP_Query(array( 'category_name' => 'email-content'));
if ( $post_query->have_posts() ) {
echo '<div class="tabs tabs_default">';
echo '<ul class="horizontal">';
while ( $post_query->have_posts() ) {
$post_query->the_post();
$title = strtolower(get_the_title());
$title = str_replace(' ', '-', $title);
echo'<li><a href="#'.$title.'">'.get_the_title().'</a></li>';
}
echo '</ul>';
while ( $post_query->have_posts() ) {
$post_query->the_post();
$title = strtolower(get_the_title());
$title = str_replace(' ', '-', $title);
echo '<div id="'.$title.'">';
echo '<div><button class="copy" id="'.$title.'" data-clipboard-text="'.get_the_content().'" title="Copy">Copy</button></div>';
echo '<div>'.get_the_content().'</div>';
echo '</div>';
}
$post_query->reset_postdata();
}
?>
第二个循环更新
我不需要其中一个循环,因此我进一步改进了代码,但我仍然没有任何运气来输出第二个循环。
<?php
$featureThumb = new WP_Query( array(
'post_type' => 'resources',
'meta_key' => 'file_upload',
'posts_per_page' => -1
));
while ($featureThumb->have_posts()) : $featureThumb->the_post();
echo '<div>';
if (has_post_thumbnail($post->ID)) {
$thumb = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'homepage-thumb-thumb' );
echo '<img src="' . $thumb[0] . '" width="200" height="200" />' ;
};
echo '<p><a href="'. get_field('file_upload') .'" target="_blank" download>Click here to download as PDF</a></p>';
endwhile;
unset($featureThumb);
}
?>
【问题讨论】:
-
您的第二个查询是
$featureThumb,但随后您将循环访问$loop。另外,在每个循环之后调用wp_reset_postdata();这将重置全局$post变量。 -
@Dre 我的代码是不是有点混乱?我在这里让自己有点困惑。所以我在第一个帖子循环之后做
wp_reset_postdata对吗? Anf 然后我将$loop更改为$featureThumb? -
@Dre 我已经更新了我的问题以反映我们的讨论 - 我做得对吗,因为第二个循环仍然无法输出
-
我已将其缩小为第一个帖子循环出现问题,因为当我切换它们时它们都会显示,但我不确定它们有什么不同?
-
如果不删除第一个“wp_reset_postdata();”一旦不再需要 $post_query 对象,您只需运行此函数。您正在运行第二个 while 循环,但查询已被重置。