打印帖子编号(反转)

时间:2017-04-14 作者:Dikeneko

我试图在旁边输入帖子的编号,但顺序相反,这意味着

1234

但是

4321

我成功地按照“正确”的顺序完成了以下操作:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<?php echo $wp_query->current_post + 1; ?>
但我不知道如何做相反的事情。更重要的是,当我把我的帖子放在几页中时,它会中断aka

第1页:1234第2页:1234(应为5678)

我试过这个:

<?php echo $wp_query->found_posts - $wp_query->current_post ?>
输入8765,然后输入下一页8765,而不是4321。。。

3 个回复
最合适的回答,由SO网友:birgire 整理而成

要打印主主页查询的递减计数器,而不打印粘性帖子,您可以尝试:

// current page number - paged is 0 on the home page, we use 1 instead
$_current_page  = is_paged() ?  get_query_var( \'paged\', 1 ) : 1; 

// posts per page
$_ppp           = get_query_var( \'posts_per_page\', get_option( \'posts_per_page\' ) );

// current post index on the current page
$_current_post  = $wp_query->current_post;

// total number of found posts
$_total_posts   = $wp_query->found_posts;

// Decreasing counter    
echo $counter = $_total_posts - ( $_current_page - 1 ) * $_ppp - $_current_post;

Example:

对于总共10篇文章,每页4篇文章,递减计数器应为:

Page 1: 
    10 - ( 1 - 1 ) * 4 - 0 = 10
    10 - ( 1 - 1 ) * 4 - 1 = 9
    10 - ( 1 - 1 ) * 4 - 2 = 8
    10 - ( 1 - 1 ) * 4 - 3 = 7

Page 2: 
    10 - ( 2 - 1 ) * 4 - 0 = 6
    10 - ( 2 - 1 ) * 4 - 1 = 5
    10 - ( 2 - 1 ) * 4 - 2 = 4
    10 - ( 2 - 1 ) * 4 - 3 = 3

Page 3: 
    10 - ( 3 - 1 ) * 4 - 0 = 2
    10 - ( 3 - 1 ) * 4 - 1 = 1
或:

Page 1: 10,9,8,7
Page 2: 6,5,4,3
Page 3: 2,1

Update:

为了支持粘帖,我们可以通过以下方式调整上述计数器:

// Decreasing counter    
echo $counter = $_total_posts
    + $sticky_offset 
    - ( $_current_page - 1 ) * $_ppp 
    - $_current_post;
我们定义:

$sticky_offset =  is_home() && ! is_paged() && $_total_posts > $_ppp 
    ? $wp_query->post_count - $_ppp 
    : 0;
请注意,粘帖可能有三种情况:

所有贴子都来自第一个(主页)。(主页上显示的帖子数量与没有粘性帖子的数量相同)

  • 负1)
  • 混合1)和2)
    1. 我们的调整应处理所有三种情况。

    SO网友:Howdy_McGee

    奇怪的问题。您可以创建辅助查询或运行钩子pre_get_posts 但总的想法是你会order by ID 按降序排列:

    $query = new WP_Query( array(
        \'orderby\' => array( \'ID\' => \'DESC\' ),
    ) );
    
    你也可以跑步array_reverse() 在原始查询的posts 数组,但我倾向于不处理原始的WP查询对象。

    SO网友:Abdul Awal Uzzal

    Here you go...

    <?php
    $per_page = 4;
    $post_query = new WP_Query(\'post_type=post&posts_per_page=\'.$per_page);
    $total_found_posts = $post_query->found_posts;
    
    if($total_found_posts >= $per_page){
        $count_from  = $per_page;
    } elseif ($total_found_posts < $per_page){
        $count_from  = $total_found_posts;
    }
    
    if (have_posts()) : while (have_posts()) : the_post();
    
    the_title();
    
    echo \'Serial #\'. $count_from--; 
    
    endwhile;
    endif;
    wp_reset_postdata();
    ?>
    

    相关推荐

    如何将Java脚本添加到Custom-Page.php模板?

    如何将javascript添加到自定义页面。php模板?如何使从w3schools ajax教程获得的以下javascript在自定义页面上工作。php模板?任何帮助都将不胜感激。工作javascript包含在以下HTML中:<!DOCTYPE html> <html> <style> table,th,td { border : 1px solid black; border-collapse: collapse;&#x