在主循环中向下移动粘性柱子

时间:2013-12-20 作者:Suman Gaudel

目前,我正在为一个在WordPress上运行的网站工作,并使用了213主题,该主题已经内置了一个粘性贴子功能,并且工作得相当好。

但我不喜欢粘贴的帖子总是显示在绝对顶部。我希望能够显示最新的一篇或两篇或三篇帖子,然后是特色/粘性帖子。我该怎么做?

1 个回复
SO网友:fuxia

您必须在中更改顺序$wp_query->posts. 将其与get_option( \'sticky_posts\' ).

示例:

function move_stickies_down( $num = 1 )
{
    global $wp_query;

    if ( empty ( $wp_query->posts ) )
        return;

    $stickies = get_option( \'sticky_posts\' );

    if ( empty ( $stickies ) )
        return;

    $sticky_posts = $top = $after = array();

    foreach ( $wp_query->posts as $p )
    {
        if ( in_array( $p->ID, $stickies ) )
        {
            $sticky_posts[] = $p;
        }
        elseif ( $num > 0 )
        {
            $top[] = $p;
            $num -= 1;
        }
        else
        {
            $after[] = $p;
        }

    }

    $wp_query->posts = array_merge( $top, $sticky_posts, $after );
}
将此函数添加到functions.php 在循环之前调用它,如下所示:

move_stickies_down( 2 );

if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();
        // show post
    }
}

结束

相关推荐

Get 1 more post in loop

例如,在简单循环中:$loop = new wp_query(array(\'posts_per_page\' => 3)); while($loop->have_posts()) : $loop->the_post(); if(get_post_meta($post->ID, \'skip_me\', true) == true){ // do something to ask for one more post, &#x