在 WooCommerce 产品上显示带有每米价格的自定义前缀

问题描述 投票:0回答:1

我使用此代码在我的产品价格下方添加文本

function cw_change_product_price_display( $price ) {
    $price .= ' <span class="unidad">por unidad</span>';
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'cw_change_product_price_display' );
add_filter( 'woocommerce_cart_item_price', 'cw_change_product_price_display' );

但是我需要显示以下文本:每米价格是:以及这个公式:

$product->get_price()/$product->get_length() . get_woocommerce_currency_symbol();

产品价格除以产品长度,无法在不导致网站错误的情况下正常工作。

另外,有没有办法让这个代码只适用于某些产品?因为单位出售的数量很多

php wordpress woocommerce product
1个回答
2
投票

您可以将其用于您的简单产品:

add_filter( 'woocommerce_get_price_html', 'custom_product_price_display', 10, 2 );
add_filter( 'woocommerce_cart_item_price', 'custom_product_price_display', 10, 2 );
function custom_product_price_display( $price, $product ) {
    if( ! is_a( $product, 'WC_Product' ) ) {
        $product = $product['data'];
    }
    
    // Price per meter prefixed
    if( $product->is_type('simple') && $product->get_length() ) {
        $unit_price_html = wc_price( $product->get_price() / $product->get_length() );
        $price .= ' <span class="per-meter">' . __("Price per meter is: ") . $unit_price_html . '</span>';
    } 
    return $price;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。已测试并有效。


要处理“每米显示的价格”和“每单位”前缀,请改用以下内容:

add_filter( 'woocommerce_get_price_html', 'custom_product_price_display', 10, 2 );
add_filter( 'woocommerce_cart_item_price', 'custom_product_price_display', 10, 2 );
function custom_product_price_display( $price, $product ) {
    if( ! is_a( $product, 'WC_Product' ) ) {
        $product = $product['data'];
    }
    
    // Price per meter prefixed
    if( $product->is_type('simple') && $product->get_length() ) {
        $unit_price_html = wc_price( $product->get_price() / $product->get_length() );
        $price .= ' <span class="per-meter">' . __("Price per meter is: ") . $unit_price_html . '</span>';
    } 
    // Prefix" per unit"
    else {
        $price .= ' <span class="per-unit">' . __("per unit") . $unit_price_html . '</span>';
    }
    return $price;
}
© www.soinside.com 2019 - 2024. All rights reserved.