微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Wordpress 中按发布日期 DESC 每页顺序显示 3 个帖子

如何解决在 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,$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 举报,一经查实,本站将立刻删除。