Cum să afișezi prețul produsului într-o buclă

25 ian. 2016, 23:49:55
Vizualizări: 54.2K
Voturi: 5

Întrebarea mea generală este: cum să afișez prețul unui produs în WooCommerce într-o buclă, nu prețul produsului a cărui pagină este? Cu alte cuvinte, aș dori să afișez câteva produse conexe într-o grilă pe o pagină de produs unică, dar când folosesc acest cod:

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

acesta afișează prețul produsului principal de pe pagină pentru fiecare produs din grila mea - prețul produsului a cărui postare este, în loc de prețul fiecărui produs din grilă, dacă are sens... Deci dacă prețul produsului pe pagina unică este 9,00 £, fiecare produs din grila de produse conexe va fi afișat cu 9,00 £ în loc de propriul său preț...

Folosesc câmpul de relații ACF pentru a alege produsele pe o pagină.

Iată codul meu complet, inclusiv câmpul de relații 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">Vezi acum</p>
            </div>
    </a>
</li>
<?php endforeach; ?>
    <?php endif; ?>

Și folosesc acest cod în functions.php în funcția de filtru, dacă asta face vreo diferență?

add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (codul de mai sus aici)
<php? }

Pentru că îl afișez pe o altă pagină de produs a trebuit să folosesc

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

în loc de

the_thumbnail

deoarece altfel aveam aceeași problemă și acum totul funcționează bine, cu excepția prețului.

Există vreo modalitate de a ținti un preț după ID sau altceva?

0
Toate răspunsurile la întrebare 3
0

Am rezolvat această problemă, $post ar trebui să fie $p în:

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

Exemplu

<?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; ?>

din aceasta sursă https://gist.github.com/aarifhsn/d0535a720d13369010ce

18 apr. 2018 20:32:50
Comentarii

Acest lucru nu va funcționa dacă prețul produsului dvs. este atribuit la o variație - de exemplu, produsele variabile nu au prețul în meta, ci în variația lor.

FooBar FooBar
21 apr. 2020 17:08:48

@FooBar deci cum putem obține prețul produsului variabil?

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

Acest cod va returna prețul corect pentru produse simple și variabile și ar trebui să returneze și prețurile active în prezent (standard / promoție).

Editare: referință - https://woocommerce.github.io/code-reference/classes/WC-Product.html#method_get_price_html

8 apr. 2021 18:14:11