web-dev-qa-db-ja.com

Woocommerceで商品の元の価格を取得する方法

商品リストをループ処理して価格を表示するコードを作成しました

  $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()は完璧に動作し、次のような価格で表示されます。

From: $ 621 $ 559

ただし、別途価格を取得したいのですが

販売価格は

$product->get_display_price()

問題は、私は元の価格を得ることができない、です

何も返さない$product->get_regular_price()を試しました

そして私は$product->get_display_price( $product->get_regular_price() )を試しました、それは販売価格を返します

それでは、元の価格を取得する方法?どうもありがとう。

2
user3538235

WP_Query postオブジェクト を返すことは間違いないと確信しています。これらはWoocommerces productオブジェクト と同じではありません。対応するグローバルを取得して製品データを取得しようとしている間は、これは機能しません。特に、実行しているクエリがそのグローバルに対して何もしないためです。私がおそらくすることは、まず、fieldsパラメーターをidsに設定して照会を実行することです。次に、返されたIDの配列をループ処理するときに、wc_get_product()を指定して productオブジェクト を取得することをお勧めします。これにより、必要な情報がすべて得られます。


注: これはWordPress 'とWoocommercesオブジェクトの間のリターンの違いについて啓発するために答えました。そして明確にするために、productはCPTですが、WPの標準クエリでは必ずしも最適に使用できるわけではありません。それはサードパーティ製のプラグインに関するものだからです。サイトガイドラインの詳細については、 ヘルプセンター をご覧ください。

3
Nicolai

ループ内で通常価格を取得するには、次のようにします。

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

そして販売価格のためにあなたが使用することができます:

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