在WordPress中,the_post()
和 setup_postdata()
函数通常一起使用,以便在循环中正确地处理和显示帖子。以下是如何在WordPress主题中使用这些函数来循环显示帖子的步骤:
-
开始循环:首先,你需要启动一个循环,这通常是通过调用
have_posts()
函数来完成的。 -
循环开始标签:使用
while
语句来循环处理帖子。 -
获取并设置帖子数据:在循环内部,调用
the_post()
函数来获取下一个帖子,并将其设置为当前帖子。the_post()
函数会自动调用setup_postdata()
来设置当前帖子的数据。
以下是具体的代码示例:
<?php
if ( have_posts() ) : // 检查是否有帖子
while ( have_posts() ) : the_post(); // 循环开始
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php if ( 'post' === get_post_type() ) : ?>
<div class="entry-meta">
<?php
// 显示发布日期、作者等元数据
posted_on();
posted_by();
?>
</div><!-- .entry-meta -->
<?php endif; ?>
</header><!-- .entry-header -->
<?php the_content( sprintf(
wp_kses(
/* translators: %s: Name of current post. Only visible to screen readers */
__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'textdomain' ),
array(
'span' => array(
'class' => array(),
),
)
),
get_the_title()
) ); ?>
<footer class="entry-footer">
<?php // 显示分类、标签等
entry_footer(); ?>
</footer><!-- .entry-footer -->
</article><!-- #post-<?php the_ID(); ?> -->
<?php
endwhile; // 循环结束
// 分页链接
the_posts_navigation();
else : // 如果没有帖子
get_template_part( 'template-parts/content', 'none' );
endif; // 结束if语句
?>
在上面的代码中:
have_posts()
检查是否有帖子可供显示。while ( have_posts() ) : the_post();
开始循环,并在每次迭代中获取并设置下一个帖子的数据。the_title()
,the_content()
,the_ID()
, 和post_class()
是用于显示帖子标题、内容、ID和类的一些函数。endwhile;
标记循环的结束。the_posts_navigation();
用于显示分页链接。
请确保你已经在你的主题的 functions.php
文件中定义了 posted_on()
, posted_by()
, 和 entry_footer()
等函数,或者使用适当的WordPress函数来替换它们。