Wordpress查询已安排的粘性帖子

时间:2014-05-20 19:31:55

标签: php wordpress loops sticky

我使用以下查询在Wordpress中显示4个最近的粘贴帖子。

<?php
$sticky = get_option( 'sticky_posts' ); // Get all sticky posts
rsort( $sticky ); // Sort the stickies, latest first
$sticky = array_slice( $sticky, 0, 4 ); // Number of stickies to show
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) ); // The query

if (have_posts() ) { while ( have_posts() ) : the_post(); ?>

ALL OF MY OUTPUTTED CODE GOES HERE - EDITED OUT TO SAVE SPACE

<?php endwhile;?>
<?php } else { echo ""; }?>
<?php wp_reset_query(); ?>

这很好但是如果我有一个预定的粘贴帖子(在将来的日期出现),查询会将其忽略为粘贴帖子之一并且只显示3 - 而不是它应该是4吗?

我如何修改以下代码以确保没有预定的粘贴帖子显示我仍然保留4个粘贴帖子的插槽?

以下更新的代码显示所有帖子 - 不仅仅是最近的4个粘贴点。

<?php
$sticky = get_option( 'sticky_posts' );
$args = array(
'posts_per_page' => 4,
'post__in'  => $sticky,
'paged' => 1,
'ignore_sticky_posts' => 1
);     

if (have_posts() ) { while ( have_posts() ) : the_post(); ?>

ALL OF MY OUTPUTTED CODE GOES HERE - EDITED OUT TO SAVE SPACE

<?php endwhile;?>
<?php } else { echo ""; }?>
<?php wp_reset_query(); ?>

1 个答案:

答案 0 :(得分:1)

限制在查询中返回的帖子数量,而不是通过切片数组。

来自http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters

$sticky = get_option( 'sticky_posts' );
$args = array(
    'posts_per_page' => 4,
    'post__in'  => $sticky,
    'ignore_sticky_posts' => 1
);

请查看上面的Codex参考资料,了解循环的示例。这是你需要的要点。

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>'; 
} else {
    // no posts found
}

/* Restore original Post Data */
wp_reset_postdata();

注意新的WP_Query如何接受上面的args。在您发布的代码中,您没有对它们做任何事情。