在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;

上面的代码显示了第一页上的帖子8,7,6。我该如何修复它?

您可以使用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, 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_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,
'orderby'=> 'publish_date',
'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,
'orderby'=> 'publish_date',
'order' => 'DESC'
)
);

foreach( get_paginated_links( $the_query ) as $index => $link ) :
echo the_content();
endwhile;

最新更新