4

I'm getting products (from a specific category) using a custom query_posts() function. I limited the showposts parameter to 25, so how do I know to activate pagination if there are still products (posts) to load?

My query_posts() code looks as follows:

$args = array(
    'post_type' => 'product',
    'taxonomy' => 'product_cat',
    'term' => $idObj->slug, // category slug
    'showposts' => 25,
    'orderby' => 'title',
    'order' => 'asc',
    'paged' => $paged  // global $paged variable
);

$all_products = query_posts( $args );

And then I output my products using a foreach statement:

foreach ($all_products as $product) {...}

I put this function in my functions.php, but $paged nor $max_pages don't seem to be set. So I get false from this function.

Now, can anyone maybe point me in some direction, as I've got no clue.

2
  • I guess showposts is deprecated... You should use posts_per_page... Jun 13, 2012 at 11:20
  • I've tried, but it doesn't work as expected. Jun 18, 2012 at 9:23

1 Answer 1

8

First of all: do not use query_post!

For more information read: When should you use WP_Query vs query_posts() vs get_posts()?

Use the WP_Query class to fetch your products, also pay attention that the showposts argument is deprecated, use posts_per_page instead:

$args = array(
    'post_type' => 'product',
    'taxonomy' => 'product_cat',
    'term' => $idObj->slug, // category slug
    'posts_per_page' => 25,
    'orderby' => 'title',
    'order' => 'asc',
    'paged' => $paged  // global $paged variable
);

$all_products = new WP_Query( $args );

// The Loop
while ( $all_products->have_posts() ) : $all_products->the_post();
    // do stuff here...
endwhile;

// Reset $post global
wp_reset_postdata();

To get the total number of found posts use the $found_posts property. And if you need the total amount of pages use the $max_num_pages property.

$found_posts = $all_products->found_posts;
$max_pages = $all_products->max_num_pages;
1
  • The correct reset function for a custom query via a new WP_Query object is wp_reset_postdata(). Refer to the codex or to Rarst's flowchart you linked to. Fixed. Also, while I was at it, note that "fields of query" are properties. Jun 13, 2012 at 12:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.