如何解决在 Wordpress 中按发布日期 DESC 每页顺序显示 3 个帖子
我按发布日期 DESC 每页顺序显示我的自定义帖子 3。有 8 个帖子,我想要的只是第 1 页,它应该显示帖子 8 和 7,而不是 8、7、6。 所以分页应该是:
第 1 页:8,7
第 2 页:6,5,4
第 3 页:3,2,1
function get_paginated_links( $query ) {
$currentPage = max( 1,get_query_var( 'paged',1 ) );
$pages = range( max( 1,$query->max_num_pages ),1 );
return array_map( function( $page ) use ( $currentPage ) {
return ( object ) array(
"isCurrent" => $page == $currentPage,"page" => $page,"url" => get_pagenum_link( $page )
);
},$pages );
}
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$posts_per_page = 3;
$the_query = new WP_Query(
array(
'posts_per_page' => $posts_per_page,'paged' => $paged,'orderby'=> 'publish_date','order' => 'DESC'
)
);
foreach( get_paginated_links( $the_query ) as $index => $link ) :
echo the_content();
endwhile;
解决方法
您可以使用 post__in
参数仅显示第 1 页的 8,7。检查以下代码。
function get_paginated_links( $query ) {
$currentPage = max( 1,get_query_var( 'paged',1 ) );
$pages = range( max( 1,$query->max_num_pages ),1 );
return array_map( function( $page ) use ( $currentPage ) {
return ( object ) array(
"isCurrent" => $page == $currentPage,"page" => $page,"url" => get_pagenum_link( $page )
);
},$pages );
}
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$posts_per_page = 3;
$args = array(
'posts_per_page' => $posts_per_page,'paged' => $paged,'orderby' => 'publish_date','order' => 'DESC'
);
if( $paged == 1 ){
$args['post__in'] = array( post_id_of_8,post_id_of_7 );
}
$the_query = new WP_Query( $args );
foreach( get_paginated_links( $the_query ) as $index => $link ) :
echo the_content();
endwhile;
有用的链接
,我最终是这样做的。它绝对可以改进。我暂时接受这个。
function get_paginated_links( $query ) {
$currentPage = max( 1,$pages );
}
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$posts_per_page = 3;
$the_query_temp = new WP_Query(
array(
'posts_per_page' => $posts_per_page,'orderby'=> 'publish_date','order' => 'ASC'
)
);
$max_num_pages = $the_query_temp->max_num_pages;
$reverse_paged = $max_num_pages + 1 - $paged;
$the_query_temp = new WP_Query(
array(
'posts_per_page' => $posts_per_page,'paged' => $reverse_paged,'order' => 'ASC'
)
);
$posts_to_show = array();
if ($the_query_temp->have_posts() ):
while ($the_query_temp->have_posts() ): $the_query_temp->the_post();
$posts_to_show[] = $post->ID;
endwhile;
endif;
wp_reset_postdata();
$the_query = new WP_Query(
array(
'posts_per_page' => $posts_per_page,'post__in' => $posts_to_show,'order' => 'DESC'
)
);
foreach( get_paginated_links( $the_query ) as $index => $link ) :
echo the_content();
endwhile;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。