Listar los productos de una categoria en woocommerce usando wp_query

Cuando uno crea una tienda virtual en wordpress con Woocommerce tienes dos caminos posibles. La mayoría de las personas elige un theme como StoreFront que es 100% compatible con este plugin o la otra es usar Woocommerce como base pero con un diseño totalmente propio.

A mí me gusta mucho la segunda opción aunque la ocupo dependiendo del proyecto y en caso de seguir este camino pues bueno, puedes requerir personalizar algunas cosas como por ejemplo listar los productos de una determinada categoría.

Para eso hay varias alternativas, pero la que a mí más me gusta y me resulta más limpio es usar wp_query, la función de WordPress que ter permite ejecutar consultas a la Base de Datos y obtener información de tus post, productos y otros temas importantes.

El funcionamiento es bastante sencillo, en primer lugar están los argumentos para esa función. Que en nuestro caso serían los siguientes:

  • posts_per_page: Corresponde a la cantidad de productos que queremos mostrar por página, si bien esto no es obligatorio, definir un límite siempre es buena idea.
  • product_cat: Es la categoría de producto que quieres buscar en la base de datos.
  • post_type: Es el tipo de post de wordpress que quieres mostrar, que en nuestro caso sería «product»

Tu línea de programación para los argumentos se debería ver como algo así:

$args = array( 'posts_per_page' => 20, 'product_cat' => $btmetanm, 'post_type' => 'product' );

A continuación puedes ejecutar la consulta a la base de datos y dejar todo en un objeto, con lo que tu línea de código quedará así:

$postslist = new WP_Query( $args ); 

Cuando hayas hecho esto, tendrás un objeto con todos los datos de producto para mostrar a tus visitantes. El cual deberás recorrer dentro de un ciclo While. Algunos datos que puedes mostrar son la imagen, , precio , el nombre o el enlace a la ficha de producto. Aqui va un ejemplo completo del ciclo.

if ( $postslist->have_posts() ) :
while ( $postslist->have_posts() ) : $postslist->the_post();

//Esto trae el URL de la imagen para usarla en un tag img de HTML
$imgDestacada =wp_get_attachment_url(get_post_thumbnail_id());
<img src="<?php echo $imgDestacada;?>">

//Aqui mostramos el nombre del producto e incluimos un enlace a ficha del producto.
<h5 class="text-center font-weight-bolder texto-lg"><a class="text-dark" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>

//Esto muestra el precio del producto
$product = new WC_Product(the_ID()); 

echo $product->get_price();

endwhile; 

Como puedes ver con unas pocas líneas de código ya tenemos listo nuestro listado. Puedes ver un ejemplo de esto en la web de mi cliente www.cobber.cl al hacer clic en el menú de categorías.

Si quieres aprender más sobre el tema no dudes en revisar mis sesiones de consultoría donde le enseño a las personas sobre este y otros temas relacionados con los negocios online de manera totalmente personalizada.

Ahora, manos a la obra. Ya sabes lo que digo, «Dios nos hace con sueños y herramientas para alcanzarlos«.

¡Nos leemos!