Mostrar el precio del producto en un bucle WP_Query en Woocommerce

2 minutos de lectura

avatar de usuario
amjay

Tengo este código para mostrar productos de una categoría y también me gustaría mostrar su precio. ¿Alguna idea de lo que podría agregar o cambiar? El siguiente código no muestra nada (tampoco hay errores).

<?php

$product_categories = array('cat-name');

$wc_query = new WP_Query( array(
    'post_type' => 'product',
    'post_status' => 'publish',
    'posts_per_page' => 10,
    'tax_query' => array( array(
        'taxonomy' => 'product_cat',
        'field'    => 'slug',
        'terms'    => $product_categories,
        'operator' => 'IN',
    ) )
) );
?>
<h1 style="margin-top:30px;">Cat Name</h1>
<div class="changing-img">
     <?php if ($wc_query->have_posts()) : ?>
     <?php while ($wc_query->have_posts()) :
                $wc_query->the_post(); ?>
<a href="https://stackoverflow.com/questions/50806232/<?php the_permalink(); ?>">
          <?php the_post_thumbnail('full'); ?>
          <?php the_post_thumbnail('full'); ?>
          <h6><?php the_title(); ?> </h6>
          <p><?php echo $wc_query->get_price_html(get_the_ID()); ?></p>
</a>
     <?php endwhile; ?>
     <?php wp_reset_postdata(); ?>
     <?php else:  ?>
     <li>
          <?php _e( 'No products' ); ?>
     </li>
     <?php endif; ?>
</div>

Además, si eso fuera posible, me gustaría extraer una primera imagen de una galería de Woocommerce (no una miniatura). Muchas gracias.

avatar de usuario
LoicTheAztec

Actualización de agosto de 2020

Deberías reemplazar la línea:

<p><?php echo $wc_query->get_price_html(get_the_ID()); ?></p>

Por las siguientes líneas:

<?php $price = get_post_meta( get_the_ID(), '_price', true ); ?>
<p><?php echo wc_price( $price ); ?></p>

o por esto mucho mejor camino (que generará el precio con el formato correcto para mostrar):

<?php $product = wc_get_product( get_the_ID() ); /* get the WC_Product Object */ ?>
<p><?php echo $product->get_price_html(); ?></p>

  • ¿Qué debo hacer si quiero obtener el precio regular y el precio de venta? Gracias

    – Shahid Khattak

    19 de enero de 2019 a las 12:39

  • @ShahidKhattak Uso get_post_meta( get_the_ID(), '_regular_price', true ); y get_post_meta( get_the_ID(), '_sale_price', true );

    – LoicTheAztec

    19 de enero de 2019 a las 12:51


  • ¡Hola! ¿Simplemente tiene curiosidad por saber por qué obtener el objeto completo es mejor que solo obtener el precio usando get_post_meta? Este último trae solo la información que necesitamos: ¿el objeto agregaría más gastos generales y sería un poco excesivo si todo lo que quisiéramos fuera el precio? ¡Gracias!

    – csaborio

    23 de agosto de 2021 a las 13:54

¿Ha sido útil esta solución?