Error en Woocommerce con paginación de productos personalizados

  • Autor Autor DanielDiaz
  • Fecha de inicio Fecha de inicio
DanielDiaz

DanielDiaz

Delta
Diseñador
Verificación en dos pasos activada
He creado un custom loop de productos y deja mostrar la primera tanda de productos y muestra la paginación, el problema está que cuanto te vas a otra página de productos dentro de la paginación te manda a la página de error 404.

He leído que puede ser porque se está sobreescribiendo la taxonomía de Woocommerce, pero no tiene sentido porque no estoy creando una taxonomía sobre la ya creada "products", sino que simplemente la quiero mostrar. Este es el código que tengo:

Insertar CODE, HTML o PHP:
				$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

				$custom_args = array(
				  'post_type' => 'product',
				  'posts_per_page' => 2,
				  'paged' => $paged
				);

				$custom_query = new WP_Query( $custom_args ); ?>

				<?php if ( $custom_query->have_posts() ) : ?>

				<!-- the loop -->
				<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
				  <article class="loop">
					<h3><?php the_title(); ?></h3>
					<div class="content">
					  <?php the_excerpt(); ?>
					</div>
				  </article>
				<?php endwhile; ?>
				<!-- end of the loop -->

				<!-- pagination here -->
				<?php
					custom_pagination($custom_query->max_num_pages,"",$paged);
				?>

				<?php wp_reset_postdata(); ?>

				<?php else:  ?>
				<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
				<?php endif; ?>

La función de paginación simplemente muestra las páginas de la siguiente manera:

yMF9Jd1.png


Ahora el problema viene cuando clickas en la siguiente página de la paginación:

mURvsVt.png


¿Alguien que pueda ayudar?
 
Me interesa el tema... me pasa algo parecido.

Me suscribo!
 
Me interesa el tema... me pasa algo parecido.

Me suscribo!

Te comento que ya lo he arreglado y solo probando miles de cosas. El problema es que cuando haces un custom loop en Woocommerce y lo limitas a 5 entradas por ejemplo, el plugin de Woocommerce sigue teniendo la paginación para la cantidad de productos predeterminados. Me explico:

Woocommerce intenta meter en su loop 10 entradas y tienes 11 entradas, por lo tanto tienes una paginación de 2 páginas (1, 2)

Tú haces un loop está limitado para que muestre tan solo 2 entradas y tienes 11 entradas, por lo tanto tu paginación tiene 6 páginas (1, 2, 3 , 4, 5, 6).

Ahora bien, La paginación de Woocommerce mete 10 entradas por cada página, por lo tanto en tu loop en la primera página estarías mostrando 2 entradas y 8 estarían no visibles, pero seguirían estando asignadas a la página 1, por lo tanto mostrarías de la entrada 1 - 10 en la primera página de la paginación, de la 10 a la 20 en la segunda paginación, y luego en la página 3 al no haber más entradas mostrarías un 404.

LA SOLUCIÓN:

Vale, pues vamos a limitar la paginación de WooCommerce al mismo límite que la paginación de nuestro loop. Añadimos esto a functions:

Insertar CODE, HTML o PHP:
/*-----------------------------------------------------------------------------------*/
/* Hace que el custom loop se limite a tantos productos como nosotros queramos */
/*-----------------------------------------------------------------------------------*/


add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 3;' ), 20 );

donde return: 3 ponemos el número de entradas que queremos que se muestren (las mismas que en nuestro loop). Espero que te haya ayudado
 
Atrás
Arriba