¿Cómo obtener el precio original del producto en WooCommerce?
He creado el código para recorrer la lista de productos y mostrar el precio
$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;
// Añadir precio original al XML
$xml .= '<Original_price>' . $product->get_display_price( $product->get_regular_price() ) . '</Original_price>';
// Añadir precio con descuento al XML
$xml .= '<Discount_price>' . $product->get_display_price() . '</Discount_price>';
echo $product->get_price_html();
endwhile;
wp_reset_query();
get_price_html()
funciona perfectamente y muestra el precio de esta manera:
Desde: $ 621 $ 559
Sin embargo, me gustaría obtener el precio por separado
Puedo obtener el precio de venta con
$product->get_display_price()
El problema es que no puedo obtener el precio original,
Intenté con $product->get_regular_price()
, pero no devuelve nada
Y también probé $product->get_display_price( $product->get_regular_price() )
, pero devuelve el precio de venta
Entonces, ¿cómo puedo obtener el precio original? Muchas gracias.

Estoy bastante seguro de que el problema es que WP_Query
devuelve objetos de publicación, que no son idénticos a los objetos de producto de WooCommerce. Mientras intentas obtener los datos del producto accediendo al global correspondiente, eso no funcionará, especialmente porque la consulta que estás realizando no afecta a ese global. Lo que probablemente haría es, en primer lugar, realizar la consulta con el parámetro fields
establecido como ids
. En segundo lugar, al recorrer el array de IDs devuelto, te sugeriría obtener el objeto de producto con wc_get_product()
, lo cual debería darte toda la información que necesitas.
Nota: Respondí esto para aclarar la diferencia en los objetos devueltos entre WordPress y WooCommerce. Y para dejar claro, aunque product
es un CPT (Tipo de Publicación Personalizado), no necesariamente es óptimo usarlo con la consulta estándar de WP. Sin embargo, hay un fuerte argumento de que tu pregunta está fuera de tema, porque trata sobre un plugin de terceros. Por favor, revisa nuestro centro de ayuda para aprender más sobre las pautas de nuestro sitio.
