Как получить первоначальную цену товара в 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()
работает отлично и отображает цену следующим образом:
От: $ 621 $ 559
Однако я хотел бы получить цены отдельно
Я могу получить цену со скидкой с помощью
$product->get_display_price()
Проблема в том, что я не могу получить первоначальную цену,
Я пробовал $product->get_regular_price()
, но это ничего не возвращает
И я пробовал $product->get_display_price( $product->get_regular_price() )
, но это возвращает цену со скидкой
Так как же получить первоначальную цену? Спасибо.

Я почти уверен, что проблема заключается в том, что WP_Query
возвращает объекты записей, которые не идентичны объектам товаров WooCommerce. Когда вы пытаетесь получить данные товара через глобальную переменную, это не сработает, особенно потому, что ваш запрос никак не влияет на эту глобальную переменную. Что я бы сделал в таком случае: во-первых, выполнил бы запрос с параметром fields
, установленным в ids
. Во-вторых, при переборе возвращённого массива идентификаторов, я бы рекомендовал получить объект товара с помощью wc_get_product()
, что должно дать вам всю необходимую информацию.
Примечание: Я ответил на этот вопрос, чтобы прояснить разницу между объектами, возвращаемыми WordPress и WooCommerce. Также хочу уточнить, что хотя product
и является пользовательским типом записи (CPT), он не всегда оптимально работает со стандартными запросами WP. Однако стоит отметить, что ваш вопрос может быть оффтопиком, так как касается стороннего плагина. Пожалуйста, ознакомьтесь с центром помощи, чтобы узнать больше о правилах нашего сайта.
