为什么在单独的WordPress帖子中使用While Over?

时间:2014-06-27 作者:pyronaur

为什么是while() 用于代替sayif() 此处:

        <?php while ( have_posts() ) : the_post(); ?>

        <?php get_template_part( \'content\', \'single\' ); ?>

        <?php _s_post_nav(); ?>

        <?php
            // If comments are open or we have at least one comment, load up the comment template
            if ( comments_open() || \'0\' != get_comments_number() ) :
                comments_template();
            endif;
        ?>

    <?php endwhile; // end of the loop. ?>
所以我从很久以前就看到了这一点,我也使用过它,因为Wordpress默认使用它。然而,今天我比往常更好奇了——为什么用while代替if?我是否希望在单帖子视图中收到多篇帖子?

https://github.com/Automattic/_s/blob/master/page.php#L18https://github.com/Automattic/_s/blob/master/single.php#L13

2 个回复
最合适的回答,由SO网友:Phil Lewis 整理而成

the WordPress Codex for have_posts 指出:

作为一种副作用,have\\u posts启动、逐步完成或重置循环。在循环结束时,have\\u posts在调用rewind\\u posts后返回0。

查看当前的来源:以及呼叫rewind_posts() 它还激发loop_end 操作(插件可能依赖于)以及设置标志in_the_loop() 正确后返回false。

这么说吧have_posts() 在每次迭代中,不仅仅返回布尔值。我不会过于依赖源的细节,因为那是一个移动的对象。当你打电话的时候,你应该知道还有其他家务活要做have_posts() 除非它返回false,否则即使只涉及一篇文章,如果这样使用它,也不太可能引入细微的互操作性问题。

SO网友:test

您必须在单篇文章或详细文章中使用,因为您没有获得文章元字段。例如,您在管理端有一个自定义的帖子类型,如“Product”,然后只向Product添加自定义字段(额外字段,如价格、编号等)。简而言之,使用while循环时,您可以像get post meta一样获得额外字段,否则在单次使用while循环时,无法获得额外字段。php

结束

相关推荐

如何在不交换wordpress-core的情况下更改wp-include/soronomy.php中的值

我遇到的问题是,即使用户登录,私有帖子的标签也不会显示在小部件标签云中。原因似乎是函数中“post\\u status”的值_update_post_term_count 在wp包括/分类中。php。至少当我将此值更改为“private”时,会显示私有标记。我的问题是:如何在不编辑分类法的情况下更改此值。php,那么核心呢?这是已更改的功能(在**...**):function _update_post_term_count( $terms, $taxonomy ) { global $w