web-dev-qa-db-ja.com

投稿数を印刷する(逆)

横にある投稿の数値を入力しようとしていますが、逆の順序で入力しています。つまり、

ではない

1 2 3 4

しかし

4 3 2 1。

私はこれで「正しい」順序でそれをすることに成功しました:

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

<?php echo $wp_query->current_post + 1; ?>

しかし、私はその逆のやり方を理解することはできません。それにもかかわらず、私がいくつかのページに私の投稿があるとき、それは別名壊れます

PAGE 1:1234 PAGE 2:1234(5678であるべきです)

私はこれを試しました:

<?php echo $wp_query->found_posts - $wp_query->current_post ?>

これは、8765を入力してから、4321の代わりに次のページ8765を入力します。

2
Dikeneko

スティッキーポストを使わずにメインホームクエリの減少カウンタを印刷するには、次のようにします。

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

例:

1ページに4件の投稿がある、合計10件の投稿の場合、減少カウンタは次のとおりです。

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

更新:

スティッキーポストをサポートするために、上記のカウンターを次のように調整します。

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

スティッキーポストには3つのケースがあります。

  1. すべての付箋投稿は最初の(ホーム)ページから来ています。 (ホームページに表示される投稿数はスティッキー投稿がない場合と同じです)。
  2. 1の負数
  3. 1)と2)の混在

私たちの調整は3つのケースすべてを処理するはずです。

1
birgire

奇妙な質問です。二次照会を作成するか、または pre_get_posts にフックを実行することができますが、一般的な考え方は ID順にすることです 降順で:

$query = new WP_Query( array(
    'orderby' => array( 'ID' => 'DESC' ),
) );

元のクエリのposts配列で array_reverse() を実行することもできますが、元のWPクエリオブジェクトを台無しにすることはほとんどありません。

0
Howdy_McGee

どうぞ...

<?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();
?>
0
Abdul Awal