I need to show a list of simple and variable products with their prices displayed as "From $XX". But I've seen some methods like below.
$min_price = $product->get_variation_price( 'min', true ); //I guess this only works for variable products
$min_price = $product->get_price_html(); //Will this guarantee to show the priceof the cheapest variation in a variable product?
$min_price = $product->get_price(); //How about this?
So, which is the best way to ensure I always get the lowest price for products regardless of them being simple or variable.
The minimum price is exclusively for variable products (price range)
For variable products only to get the min active price amount (non formatted) you will use:
$min_price = $product->get_variation_price( 'min' );
$min_price_for display = $product->get_variation_price( 'min', true ); // for display
For other product types (including variations) to get the active price amount (non formatted) you will use:
$price = $product->get_price();
For all products to get the formatted displayed price, you will use:
$formatted_price = $product->get_price_html();
This last one can give a price range for variable products and for products on sale.
Related: WooCommerce variable products: keep only "min" price with a custom label