根据数量在WooCommerce中显示产品价格

时间:2019-09-10 06:06:58

标签: php wordpress woocommerce product cart

如何在woocommerce商店页面中显示基于12个数量的产品价格。

enter image description here

function sv_change_product_html( $price_html, $product ) {
    $unit_price = get_post_meta( $product->id, 'unit_price', true );
    if ( ! empty( $unit_price ) ) {
        $price_html = '<span class="amount">' . wc_price( $unit_price ) . ' inc GST per bottle</span>'; 
    }

    return $price_html;
}

add_filter( 'woocommerce_get_price_html', 'sv_change_product_html', 10, 2 );


function sv_change_product_price_cart( $price, $cart_item, $cart_item_key ) {

      $unit_price = get_post_meta( $cart_item['product_id'], 'unit_price', true );
    if ( ! empty( $unit_price ) ) {
        $price = wc_price( $unit_price ) . ' inc GST per bottle';   
    }
    return $price;

}   

add_filter( 'woocommerce_cart_item_price', 'sv_change_product_price_cart', 10, 3 );

1 个答案:

答案 0 :(得分:1)

自WooCommerce 3以来,您的代码有点过时了(您的问题还不清楚)……请尝试以下操作:

add_filter( 'woocommerce_get_price_html', 'displayed_product_unit_price', 10, 2 );
function displayed_product_unit_price( $price_html, $product ) {
    if ( $unit_price = $product->get_meta( 'unit_price' ) ) {
        $price_html  = '<span class="amount">' . wc_price( floatval( $unit_price ) ) . ' ' . __( "inc GST per bottle", "woocommerce") . '</span><br>';
        $price_html .= '<span class="amount">' . wc_price( floatval( $unit_price ) * 12 ) . ' ' . __( "inc GST per 12-bottles", "woocommerce") . '</span>';
    }
    return $price_html;
}



add_filter( 'woocommerce_cart_item_price', 'displayed_cart_item_unit_price', 10, 3 );
function displayed_cart_item_unit_price( $price, $cart_item, $cart_item_key ) {
    if ( $unit_price = $cart_item['data']->get_meta( 'unit_price' ) ) {
        $price = wc_price( floatval( $unit_price ) ) . ' ' . __( "inc GST per bottle", "woocommerce");
    }
    return $price;
} 

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。

enter image description here

现在,如果WooCommerce产品的有效价格(默认情况下)是基于12瓶,则应替换以下行(在第一个功能中)

$price_html .= '<span class="amount">' . wc_price( floatval( $unit_price ) * 12 ) . ' ' . __( "inc GST per 12-bottles", "woocommerce") . '</span>';

通过此行:

$price_html .= '<span class="amount">' . wc_price( wc_get_price_to_display( $product ) ) . ' ' . __( "inc GST per 12-bottles", "woocommerce") . '</span>';