¿Determine si hay más publicaciones disponibles de las que se solicitaron en 'query_posts ()'?

2

Estoy obteniendo productos (de una categoría específica) usando una función personalizada query_posts() . Limité el parámetro showposts a 25, así que, ¿cómo puedo activar la paginación si todavía hay productos (publicaciones) para cargar?

Mi código query_posts() tiene el siguiente aspecto:

$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 );

Y luego imprimo mis productos usando una declaración foreach :

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

Pongo esta función en mi functions.php , pero $paged ni $max_pages no parece estar configurado. Entonces obtengo false de esta función.

Ahora, ¿alguien puede apuntarme en alguna dirección, ya que no tengo ni idea?

    
pregunta Anriëtte Myburgh 13.06.2012 - 13:07

1 respuesta

5
  

Primero que todo: ¡no uses query_post !

     

Para obtener más información, lea: ¿Cuándo debería utilizar WP_Query vs query_posts () vs get_posts ()?

Use la clase WP_Query para obtener sus productos, también preste atención a que el argumento showposts está obsoleto, use posts_per_page en su lugar:

$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();

Para obtener el número total de publicaciones encontradas, use la propiedad $found_posts . Y si necesita la cantidad total de páginas, use la propiedad $max_num_pages .

$found_posts = $all_products->found_posts;
$max_pages = $all_products->max_num_pages;
    
respondido por el Eugene Manuilov 13.06.2012 - 13:28

Lea otras preguntas en las etiquetas