Come visualizzare il prezzo del prodotto nel ciclo
La mia domanda generale è: come visualizzare il prezzo di un prodotto in WooCommerce all'interno di un ciclo, non il prezzo del prodotto della pagina corrente? In altre parole, vorrei visualizzare alcuni prodotti correlati in una griglia nella pagina di un singolo prodotto, ma quando uso questo codice:
<?php
$product = new WC_Product(get_the_ID());
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>
viene visualizzato il prezzo del prodotto principale della pagina per ogni singolo prodotto nella mia griglia - il prezzo del prodotto della pagina corrente, invece del prezzo di ciascun prodotto nella griglia, se ha senso... Quindi se il prezzo del prodotto nella pagina singola è £9.00, ogni prodotto nella griglia dei prodotti correlati mostrerà £9.00 invece del proprio prezzo...
Sto utilizzando il campo relazioni di ACF per selezionare i prodotti in una pagina.
Ecco il mio codice completo che include il campo relazione 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">Visualizza ora</p>
</div>
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
E uso questo in functions.php nella funzione del filtro, se fa qualche differenza?
add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (il codice sopra qui)
<php? }
Poiché lo visualizzo in un'altra pagina prodotto ho dovuto usare
get_the_post_thumbnail( $p->ID, '175x100' )
invece di
the_thumbnail
poiché altrimenti avevo lo stesso problema e ora tutto funziona bene, tranne il prezzo.
C'è un modo per selezionare un prezzo tramite ID
o qualcos'altro
?

Esempio
<?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; ?>
da questo https://gist.github.com/aarifhsn/d0535a720d13369010ce

Questo non funzionerà se il prezzo del tuo prodotto è assegnato a una variazione - ad esempio, i prodotti variabili non hanno il prezzo nei loro meta, ma nelle loro variazioni.

global $post;
$product = new WC_Product( $post->ID );
echo $product->get_price_html();
Questo restituirà il prezzo corretto per prodotti semplici e variabili e dovrebbe anche restituire i prezzi attualmente attivi (regolari / in offerta).
Modifica: riferimento - https://woocommerce.github.io/code-reference/classes/WC-Product.html#method_get_price_html
