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.
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.
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);