如何在循环中的每个帖子之后添加元素,但不是最后一个

时间:2012-09-26 作者:kaiser

我有一个非常常见的循环:

global $wp_query, $wpdb;
if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();

        get_template_part(
             \'template_parts/content\'
            ,get_post_format()
        );
    }
}
else
{
    get_template_part( \'no_results\' );
}
现在我需要添加(例如)一个<hr /> 在每一篇文章之后,但不是最后一篇。

我如何确定我目前是否获得了当前循环中倒数第二个帖子?

注意:这也适用于分页循环。

3 个回复
最合适的回答,由SO网友:Michael 整理而成

另一种可能性:

if( $wp_query->current_post < $wp_query->post_count-1 ) echo \'<hr />\';

SO网友:kaiser

其实很简单:

( $wpse_counter = count( $wp_query->posts ) ) && ++$GLOBALS[\'wpdb\']->wpse_post_in_loop < $wpse_counter AND print "<hr />";
使用调用全局$GLOBALS[\'wpdb\'] 将允许修改全局自身。因此,我使用一个名为wpse_post_in_loop 不干扰核心设置、属性等。

上面这条线只是为了优雅。如果你想保持这个速度,最好count() 在回路前面的零件。

SO网友:Ryan Koehler

global $wp_query, $wpdb;
if( have_posts() ) {
    $total_posts = $wp_query->found_posts;
    $i = 0;
    while( have_posts() ) {
        the_post();
        $i++;
        get_template_part(
                \'template_parts/content\'
                , get_post_format()
        );
        if( $i != $total_posts ) {
            echo \'<hr />\';
        }
    }
} else {
    get_template_part( \'no_results\' );
}
也可以删除$wpdb,因为在本例中任何地方都没有使用它。

结束

相关推荐

Redirect Loops Problems

我不知道到底发生了什么事。昨天,它工作得很好。我回忆起今天早上我所做的让我陷入这种困境的事情。昨天,我刚刚在PhpMyAdmin编辑帖子。好吧,不管怎样,我禁用了所有插件,并找出什么不起作用。这是插件自定义永久链接。My problem is that I have about hundred videos in youtube, and each video is given with Custom Permalink set. I want to keep the Custom Permalink P