php - Counting Search results, and displaying the offset per page

I'm trying to achieve the following search result counts while using pagination;Showing 1-9 of 368 Items - (Page On

I'm trying to achieve the following search result counts while using pagination;

Showing 1-9 of 368 Items - (Page One)

Showing 9-18 of 368 Items - (Page Two)

but I'm getting myself turned around with $count_posts; I'm not sure I'm fully grasping it. :/


PHP (Search.php)

<?php $post_count = $wp_query->post_count; ?>
<?php $count_products = wp_count_posts( 'products' )->publish; ?>
<?php $count_posts = wp_count_posts()->publish; ?>

HTML/PHP (Search.php)

<p class="small text-uppercase">Showing <?php echo $post_count; . '-' . $post_count; ?> of <strong><?php echo $count_products ?> items</strong></p>

My Question: How can I achieve the result I am after?

EDIT: 4 JUL 14:56

After quite a bit of testing I was able to figure it out with the help of, @KrzysiekDróżdż.

if ( !is_paged() ) {
    // first page of pagination
    $first_post = absint( $wp_query->get('paged') - 1 );
    $last_post = $first_post + $wp_query->post_count - 1;
    $all_posts = $wp_query->found_posts;
} else {
    $first_post = absint( $wp_query->get('paged') - 1 ) * $wp_query->get('posts_per_page') + 1;
    $last_post = $first_post + $wp_query->post_count - 1;
    $all_posts = $wp_query->found_posts;
} 

I'm trying to achieve the following search result counts while using pagination;

Showing 1-9 of 368 Items - (Page One)

Showing 9-18 of 368 Items - (Page Two)

but I'm getting myself turned around with $count_posts; I'm not sure I'm fully grasping it. :/


PHP (Search.php)

<?php $post_count = $wp_query->post_count; ?>
<?php $count_products = wp_count_posts( 'products' )->publish; ?>
<?php $count_posts = wp_count_posts()->publish; ?>

HTML/PHP (Search.php)

<p class="small text-uppercase">Showing <?php echo $post_count; . '-' . $post_count; ?> of <strong><?php echo $count_products ?> items</strong></p>

My Question: How can I achieve the result I am after?

EDIT: 4 JUL 14:56

After quite a bit of testing I was able to figure it out with the help of, @KrzysiekDróżdż.

if ( !is_paged() ) {
    // first page of pagination
    $first_post = absint( $wp_query->get('paged') - 1 );
    $last_post = $first_post + $wp_query->post_count - 1;
    $all_posts = $wp_query->found_posts;
} else {
    $first_post = absint( $wp_query->get('paged') - 1 ) * $wp_query->get('posts_per_page') + 1;
    $last_post = $first_post + $wp_query->post_count - 1;
    $all_posts = $wp_query->found_posts;
} 
Share Improve this question edited Jun 15, 2020 at 8:21 CommunityBot 1 asked Jun 28, 2019 at 10:18 LewisLewis 4083 silver badges16 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

I'm afraid you're doing it a little bit wrong...

Here are the problems:

  1. post_count field contains the number of posts being displayed and not the offset.
  2. wp_count_posts returns the number of posts globally, not in current query (so it will not be true for queries that have some filters).
  3. echo $post_count; . '-' . $post_count; is not correct PHP code.

So how to do this?

All you need is the info from WP_Query:

<?php
    $first_post = absint( $wp_query->get('paged') - 1 ) * $wp_query->get('posts_per_page') + 1;
    $last_post = $first_post + $wp_query->post_count;
    $all_posts = $wp_query->found_posts;
?>
<p class="small text-uppercase">Showing <?php echo $first_post . '-' . $last_post; ?> of <strong><?php echo $all_posts; ?> items</strong></p>

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745335675a4623091.html

相关推荐

  • php - Counting Search results, and displaying the offset per page

    I'm trying to achieve the following search result counts while using pagination;Showing 1-9 of 368 Items - (Page On

    7小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信