产品促销时在价格中添加自定义文本标签

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

在 WooCommerce 产品单页上,如果产品有销售价格,则正常价格会被划掉,并在其后面突出显示销售价格。

我的问题:
如何添加

"Old Price: XX Dollar"
"New Price: XX Dollar"
等标签,而不仅仅是划掉的价格和新价格(促销价)?

php wordpress woocommerce product hook-woocommerce
2个回答
5
投票

更新2(针对简单和可变产品+解决了相同变体价格的错误)

当产品打折时,您可以根据需要使用挂钩在

woocommerce_sale_price_html
woocommerce_variation_sale_price_html
过滤器挂钩中的自定义函数添加自定义标签(适用于简单和变量产品。

对于变量产品中的最低/最高价格,我们需要在

woocommerce_variation_sale_price_html
过滤器挂钩中挂钩不同的函数。

这是代码:

add_filter('woocommerce_variation_sale_price_html','sale_prices_custom_labels', 10, 2 );
add_filter('woocommerce_sale_price_html','sale_prices_custom_labels', 10, 2 );
function sale_prices_custom_labels( $price, $product ){
    if (isset($product->sale_price)) {
        $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price( $product->regular_price ). '</del>
        <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price( $product->sale_price ) . '</ins>';
    }
    else
    {
        $price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).'</ins>';
    }
    return $price;
}

add_filter('woocommerce_variable_sale_price_html', 'sale_prices_custom_labels_min_max', 20, 2);
function sale_prices_custom_labels_min_max( $price, $product) {

    $variation_min_reg_price = $product->get_variation_regular_price('min', true);
    $variation_max_reg_price = $product->get_variation_regular_price('max', true);
    $variation_min_sale_price = $product->get_variation_sale_price('min', true);
    $variation_max_sale_price = $product->get_variation_sale_price('max', true);

    if ( $variation_min_reg_price != $variation_min_sale_price || $variation_max_reg_price != $variation_max_sale_price )
    {
        if($variation_min_reg_price == $variation_max_reg_price && $variation_min_sale_price == $variation_max_sale_price ){
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        elseif($variation_min_reg_price != $variation_max_reg_price && $variation_min_sale_price == $variation_max_sale_price )
        {
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_min_reg_price) . '-' . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        elseif($variation_min_reg_price == $variation_max_reg_price && $variation_min_sale_price != $variation_max_sale_price )
        {
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_min_sale_price) . '-' . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        else
        {
        $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_min_reg_price) . '-' . woocommerce_price($variation_max_reg_price) . '</del>
        <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_min_sale_price) . '-' . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
    }
    return $price;
}

您还可以用其他内容替换正常的

<ins>
<del>
html 标签,并更改或添加一些类(如果对您来说更方便)。 此时一切皆有可能。

代码位于活动子主题(或主题)的 function.php 文件中,或者也位于任何插件文件中。

此代码经过测试并且有效。


相关答案:围绕产品销售价格和正常价格进行有条件的定制输出


0
投票

在管理端,您需要定义您的销售价格和实际价格,以便它会自动反映在前面作为您的旧价格和新价格。

您还需要为此编写一些代码。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.