我正在建立自己的主题。我为我的博客设置了一个页面(我制作了一个模板),我只想展示一些帖子。它使用以下循环:
<?php
query_posts('post_type=post');
if (have_posts()) {
while (have_posts()) {
?>
<div class="blog_post">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry_date"><?php the_time('F jS, Y') ?></div>
<?php
the_post();
the_content();
?>
</div>
<?php
}
}
?>
我的帖子标题分别是“第一篇,第二篇,第三篇,第四篇”。当帖子显示在博客页面上时,它们会以正确的顺序显示,但帖子的标题不正确。第一篇文章的标题是:“第二篇文章”。第二篇文章的标题是:“第三篇”,依此类推,直到最后一篇(最近的)帖子有标题:“博客”(页面标题)。他们搞砸的头衔怎么了?
我尝试过的事情: 在我来到这儿之前,我已经研究了很多。我尝试使用get_the_title(),但这导致没有显示标题。我也试过使用the_title_attribute()无济于事。我也明白我不应该在这个循环中使用query_posts,但我不确定在这种特殊情况下使用哪个正确的方法来获取帖子。我读过的大部分信息都不清楚,但似乎没有解决问题。
非常感谢任何帮助。
答案 0 :(得分:0)
尝试以下方法:未经测试
<?php
global $post;
$args = array();
$myposts = get_posts( $args );
foreach( $myposts as $post ) :
setup_postdata($post); ?>
YOUR HTML HERE
<?php endforeach;
wp_reset_postdata(); ?>
答案 1 :(得分:0)
好的没关系!我刚刚发现了问题所在。我把“the_post()”移到了while循环之后,所以它现在读起来像这样:
<?php
query_posts('post_type=post');
if (have_posts()) {
while (have_posts()) {
the_post();
?>
<div class="blog_post">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry_date"><?php the_time('F jS, Y') ?></div>
<?php
the_content();
?>
</div>
<?php
}
}
?>
当我在wordpress codex中阅读有关the_post()时,我找到了这个解决方案。事实证明这个函数正在为行中的下一个帖子设置信息,因此不应该与当前帖子的html输出混在一起。
关于我是否应该使用“query_posts()”仍然是我不确定并愿意接受任何建议的事情。但是它当前形式的循环正在发挥作用。