我使用以下查询在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(); ?>
答案 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。在您发布的代码中,您没有对它们做任何事情。