Cómo mostrar el precio del producto en un bucle
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
?
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

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.

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
