web-dev-qa-db-fra.com

Comment obtenir le prix d'origine du produit sur woocommerce?

J'ai créé le code pour parcourir la liste de produits et afficher le prix

  $args = array( 'post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'hot-deals');
          $loop = new WP_Query( $args );
          while ( $loop->have_posts() ) : $loop->the_post(); 

global $product; 


$xml .= '<Original_price>' . $product->get_display_price( $product->get_regular_price() ) . '</Original_price>';
$xml .= '<Discount_price>' . $product->get_display_price() . '</Discount_price>';

echo $product->get_price_html();

endwhile;
wp_reset_query();

get_price_html() fonctionne parfaitement et affiche le prix comme suit:

From: $ 621 $ 559

Cependant, j'aimerais avoir le prix séparément

Je peux obtenir le prix de vente avec

$product->get_display_price()

Le problème est que je ne peux pas obtenir le prix initial,

J'ai essayé $product->get_regular_price(), ça ne retourne rien

Et j'ai essayé $product->get_display_price( $product->get_regular_price() ), qui retourne le prix de vente

Alors, comment obtenir le prix d'origine? Merci beaucoup.

2
user3538235

Je suis presque sûr que le problème est que le WP_Query renvoie objets postaux, qui ne sont pas identiques à Woocommerces objets produits. Si vous essayez d’obtenir les données du produit en obtenant le global correspondant, cela ne fonctionnera pas, en particulier parce que la requête que vous exécutez ne fait rien pour ce global. Maintenant, ce que je ferais probablement, c’est d’abord, exécuter la requête avec le paramètre fields défini sur ids. Deuxièmement, lorsque vous parcourez le tableau d'identifiants renvoyé, je vous suggère d'obtenir le produit product avec wc_get_product(), ce qui devrait vous fournir toutes les informations dont vous avez besoin.


_ {Note:J'ai répondu à cette question pour éclaircir la différence de retour entre l'objet WordPress 'et Woocommerces. Et pour préciser, bien que product soit un CPT, il n'est pas nécessairement utilisable de manière optimale avec la requête standard de WP. Il y a un argument fort pour que votre question soit hors sujet, car il s'agit d'un plugin tiers. Veuillez consulter notre centre d'aide pour en savoir plus sur les directives de notre site.

3
Nicolai

Pour obtenir le prix régulier dans la boucle, vous pouvez utiliser:

get_post_meta( get_the_ID(), '_regular_price', true);

Et pour le prix de vente, vous pouvez utiliser:

get_post_meta( get_the_ID(), '_sale_price', true);
0
Oussama Bouthouri