为了账号安全,请及时绑定邮箱和手机立即绑定

使用短代码显示产品价格,包括 WooCommerce 中的可变产品

使用短代码显示产品价格,包括 WooCommerce 中的可变产品

PHP
HUWWW 2023-05-26 15:57:28
我在 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 可变产品价格前缀中合并这个答案?
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我正在使用以下解决方案,这与我的初衷并不完全相同,因为它没有显示可变产品的价格范围,而是实际显示“发件人”消息(可以更改),然后是单一价格。


但是,它现在通过短代码适用于标准产品和可变产品,我需要的也是如此。


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' ) ){


$product = wc_get_product( intval( $atts['id'] ) );


if ( $product->is_type( 'variable' ) ){ 


        $prefix = sprintf('%s ', __('From','woocommerce'));

        $min_price_regular = $product->get_variation_regular_price( 'min', true );

        $min_price_sale    = $product->get_variation_sale_price( 'min', true );

        $max_price = $product->get_variation_price( 'max', true );

        $min_price = $product->get_variation_price( 'min', true );


    $price = ( $min_price_sale == $min_price_regular ) ? wc_price( $min_price_regular ) : wc_price( $min_price_sale );

    return 

    ( $min_price == $max_price ) ? sprintf('<br/>' . $price) : $html = sprintf('<br/><span class="from-price">%s%s</span>', $prefix, $price);

}



else{


// 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;

add_shortcode( 'product_price', 'custom_price_shortcode_callback' );


查看完整回答
反对 回复 2023-05-26
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

使用 Booster for woocommerce 插件。并将这个 [wcj_product_price] 简码放在任何你想要的地方。它将显示带有货币符号的简单或可变产品价格。而且这个插件对woommerce很有帮助。



查看完整回答
反对 回复 2023-05-26
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信