我在 WooCommerce 优秀答案中使用按产品 ID 显示产品价格和短代码,通过短代码显示产品价格,但我需要一个解决方案,它也可以显示可变产品的价格范围。
价格范围应显示所有变体的最低可购买价格(常规或促销)到所有变体的最高可购买价格。它不需要显示促销价和常规价格的两个范围,只需一个范围显示您实际可以购买的价格,无论是促销价还是常规价。
例如:
变化 1 - 价格 4.00
变体 2 - 价格 4.00 促销价 3.00
变化 3 - 价格 6.00 促销价 5.00
变化 4 - 价格 8.00
以上应显示 3.00 - 8.00 的价格范围
代码目前处理单一产品的方式不需要改变,我只需要向其中添加可变产品。
我使用的确切代码如下:
function custom_price_shortcode_callback( $atts ) {
$atts = shortcode_atts( array(
'id' => null,
), $atts, 'product_price' );
$html = '';
if( intval( $atts['id'] ) > 0 && function_exists( 'wc_get_product' ) ){
// Get an instance of the WC_Product object
$product = wc_get_product( intval( $atts['id'] ) );
// Get the product prices
$price = wc_get_price_to_display( $product, array( 'price' => $product->get_price() ) ); // Get the active price
$regular_price = wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ); // Get the regular price
$sale_price = wc_get_price_to_display( $product, array( 'price' => $product->get_sale_price() ) ); // Get the sale price
// Formatting price settings (for the wc_price() function)
$args = array(
'ex_tax_label' => false,
'decimal_separator' => '.',
'thousand_separator' => ',',
'decimals' => 2,
'price_format' => '%1$s%2$s',
);
// Formatting html output
if( ! empty( $sale_price ) && $sale_price != 0 && $sale_price < $regular_price )
$html = "<br/><del>" . wc_price( $regular_price, $args ) . "</del> " . wc_price( $sale_price, $args ); // Sale price is set
else
$html = "<br/>" . wc_price( $price, $args ); // No sale price set
}
return $html;
也许可以从WooCommerce 可变产品价格前缀中合并这个答案?
慕田峪7331174
江户川乱折腾