Cómo mostrar el precio del producto en un bucle

25 ene 2016, 23:49:55
Vistas: 54.2K
Votos: 5

Mi pregunta general es: ¿cómo mostrar el precio de un producto en WooCommerce dentro de un bucle, no el precio del producto de la página actual? En otras palabras, me gustaría mostrar varios productos relacionados en una cuadrícula en la página de un producto individual, pero cuando uso este código:

<?php 
   $product = new WC_Product(get_the_ID()); 
   echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>

muestra el precio del producto principal de la página para cada producto en mi cuadrícula - el precio del producto de la página actual, en lugar del precio de cada producto en la cuadrícula, si tiene sentido... Entonces si el precio del producto en la página individual es £9.00, cada producto en la cuadrícula de productos relacionados se mostrará con £9.00 también en lugar de su propio precio...

Estoy usando un campo de relaciones ACF para seleccionar los productos en una página.

Aquí está mi código completo incluyendo el campo de relación ACF:

<?php 
$posts = get_field('related_set_1');
if( $posts ): ?>
<?php foreach( $posts as $p): ?>
<li>
    <a href="<?php echo get_permalink( $p->ID ); ?>">
        <?php 
          echo get_the_post_thumbnail( $p->ID, '175x100' )
                ?>
            <div style="overflow:hidden">
                <h4><?php echo $p->post_title; ?></h4>
                <p class="price">
                    <?php 
                    global $post;
                    $product = new WC_Product($post->ID); 
                    echo     wc_price($product->get_price_including_tax(1,$product->get_price()));
                    ?>
                </p>
                <p class="link">Ver ahora</p>
            </div>
    </a>
</li>
<?php endforeach; ?>
    <?php endif; ?>

¿Y uso esto en functions.php en la función filter, si es que hace alguna diferencia?

add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (el código anterior aquí)
<php? }

Como lo muestro en otra página de producto, tuve que usar

get_the_post_thumbnail( $p->ID, '175x100' )

en lugar de

the_thumbnail

ya que de lo contrario tenía el mismo problema y todo funciona bien ahora, excepto el precio.

¿Hay alguna manera de apuntar a un precio por ID o algo?

0
Todas las respuestas a la pregunta 3
0

Lo resolví, $post debería ser $p en:

global $post;
$product = new WC_Product( $post->ID );
1 feb 2016 19:09:15
2

Ejemplo

<?php
global $woocommerce;
$currency = get_woocommerce_currency_symbol();
$price = get_post_meta( get_the_ID(), '_regular_price', true);
$sale = get_post_meta( get_the_ID(), '_sale_price', true);
?>

<?php if($sale) : ?>
<p class="product-price-tickr"><del><?php echo $currency; echo $price; ?></del> <?php echo $currency; echo $sale; ?></p>    
<?php elseif($price) : ?>
<p class="product-price-tickr"><?php echo $currency; echo $price; ?></p>    
<?php endif; ?>

de este https://gist.github.com/aarifhsn/d0535a720d13369010ce

18 abr 2018 20:32:50
Comentarios

Esto no funcionará si el precio de tu producto está asignado a una variación - por ejemplo, los productos variables no tienen su precio en sus metadatos, sino en su variación.

FooBar FooBar
21 abr 2020 17:08:48

@FooBar entonces, ¿cómo podemos obtener el precio del producto variable?

mjcoder mjcoder
20 may 2020 14:35:46
0
global $post;
$producto = new WC_Product( $post->ID );
echo $producto->get_price_html();

Esto devolverá el precio correcto para productos simples y variables y también debería devolver los precios actualmente activos (precio regular / oferta).

Editar: ref - https://woocommerce.github.io/code-reference/classes/WC-Product.html#method_get_price_html

8 abr 2021 18:14:11