我有这个问题:
<?php $wp_query = array(
'post__not_in' => array(4269),
'post_type' => 'whatson',
'exclude' => '4269',
'posts_per_page' => 5,
'order' => 'ASC',
'orderby' => 'date',
'post_status' =>array('future','published'));
?>
它目前正在显示即将发布的帖子...如何在顶部显示粘贴帖子,然后显示其下方的其他帖子?
例如,如果两个帖子被标记为粘性,那么它们将显示在顶部,然后其他3个帖子将只是即将发布的帖子。
答案 0 :(得分:1)
我有一段时间遇到过类似的问题并设计了以下解决方案。这将向您展示如何输出最多五个帖子,其中粘性帖子位于顶部。您必须自己调整arguments数组,但这应该指向正确的方向。
确定实际显示了多少个粘性帖子,从5中减去该数字,然后显示非粘性帖子的余额。
<?php
function define_loop_args($present_cat, $sticky_toggle = 0 ) {
/*the total number of posts to display*/
$this->maxNum = 5;
$loop_args = array(
'cat' => $present_cat,
);
if ( $sticky_toggle == TRUE ) {
$loop_args['post__in'] = get_option( 'sticky_posts' );
$loop_args['posts_per_page'] = $this->maxNum;
} else {
$loop_args['post__not_in'] = get_option( 'sticky_posts' );
$loop_args['posts_per_page'] = ((int)($this->maxNum) - (int)($this->sticky_count));
}
$this->loop_args = $loop_args;
}
?>
<ul class="no-children">
<?php
/*
* STICKY
*output sticky posts first
*/
$this->define_loop_args( $catID, 1 );
/*
*count the number of sticky posts displayed, in order to calculate how many non-sticky posts to output next
*/
$sticky_count = 0;
// The Query
$the_query = new WP_Query( $this->loop_args );
// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php
$sticky_count++;
endwhile;
// End The Loop
// Reset Post Data
wp_reset_postdata();
$this->sticky_count = $sticky_count;
/*
* NON-STICKY
*output non-sticky posts next
*/
$this->define_loop_args( $catID );
$the_query = new WP_Query( $this->loop_args );
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php
endwhile;
// End The Loop
// Reset Post Data
wp_reset_postdata();
?>
</ul>
答案 1 :(得分:0)
你可以通过以下方式获得多个循环
<?php
$sticky = get_option( 'sticky_posts' );
$args_ordinary = array(
'post__not_in' => array(4269,$sticky),
'post_type' => 'whatson',
'exclude' => '4269',
'posts_per_page' => 3,
'order' => 'ASC',
'orderby' => 'date',
'post_status' =>array('future','published'));
$args_sticky = array(
'posts_per_page' => -1,
'post__in' => $sticky,
'posts_per_page' => 2,
'post_type' => 'whatson'
);
query_posts($args_sticky);
if (have_posts()): ?>
<?php while (have_posts()) : the_post(); ?>
//sticky post
<?php endwhile; ?>
<?php endif; ?>
// Now Ordinary Posts
query_posts($args_ordinary);
if (have_posts()): ?>
<?php while (have_posts()) : the_post(); ?>
//ordinary post
<?php endwhile; ?>
<?php endif; ?>