最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

posts - Why this function doesn't works without the_post?

programmeradmin1浏览0评论

I'm a beginner wordpress developer, getting a lot confused in the_post(); function, apparently it doesn't perform anything that can be visualized, but if I do not invoke this function my code breaks up. can someone please explain to me. Even though I've sufficient knowledge of programming languages, but this thing is getting me confused. Thanks in advance to helping hands

while (have_posts()) {

    the_post(); ?>

    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>

<?php }

I'm a beginner wordpress developer, getting a lot confused in the_post(); function, apparently it doesn't perform anything that can be visualized, but if I do not invoke this function my code breaks up. can someone please explain to me. Even though I've sufficient knowledge of programming languages, but this thing is getting me confused. Thanks in advance to helping hands

while (have_posts()) {

    the_post(); ?>

    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>

<?php }
Share Improve this question asked Jun 14, 2020 at 4:34 LintLint 1131 silver badge7 bronze badges 1
  • 1 This query can be answered easily by looking at the WordPress documentation. In fact WP documentation has a specific topic on this particular function. – CodeMascot Commented Jun 14, 2020 at 8:06
Add a comment  | 

1 Answer 1

Reset to default 1

I'm just going to quote a brief, yet comprehensive, comment on the official reference page for the_post():

Function the_post() checks whether the loop has started and then sets the current post by moving, each time, to the next post in the queue.

Additionally, the "current post" here refers to the current item in WP_Query::$posts which is an array of posts returned by the WordPress query.

So for example, if WP_Query::$posts contains 5 items, the first call to the_post() will move the array pointer to the first item in that array, i.e. WP_Query::$posts[0]. Then the next calls move the pointer to WP_Query::$posts[1], WP_Query::$posts[2] and so forth until the last item is reached.

So the_post() indeed doesn't display or even return anything, but without calling that function, you'd be stuck in an infinite while execution — for as long as the have_posts() returns true (i.e. there is a next item in WP_Query::$posts), hence as you've seen it, the page breaks.

And one more thing you should know, is that the current post is referenced by the global $post variable which is relied upon by the_title(), the_content(), get_the_title() and other the_ and get_the_ functions which display or retrieve/use data from the current post.

发布评论

评论列表(0)

  1. 暂无评论