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

Php 在产品销售时向价格中添加自定义文本标签,php,wordpress,woocommerce,product,price,Php,Wordpress,Woocommerce,Product,Price,在WooCommerce产品单页上,如果产品拥有销售价格,则划掉正常价格,并在其后面突出显示销售价格 我的问题: 如何添加标签,例如“旧价格:XX美元”和“新价格:XX美元”,而不是仅添加划掉的价格和新价格(销售价格)?在管理端,您需要定义您的销售价格和实际价格,以便在前端自动反映为您的旧价格和新价格 您还需要为此编写一些代码 更新2(适用于简单和多变的产品+解决了相同变化价格的缺陷) 当产品在销售时,您可以使用连接到woocommerce\u sale\u price\u html和wooco

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

我的问题:

如何添加标签,例如
“旧价格:XX美元”
“新价格:XX美元”
,而不是仅添加划掉的价格和新价格(销售价格)?

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

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

更新2(适用于简单和多变的产品+解决了相同变化价格的缺陷)

当产品在销售时,您可以使用连接到
woocommerce\u sale\u price\u html
woocommerce\u variation\u sale\u price\u html
过滤器挂钩(用于简单和可变产品)中的自定义函数,根据需要添加自定义标签

对于变量产品中的最小/最大价格,我们需要在
woocommerce\u variation\u sale\u price\u 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;
}
add_filter('woocommerce_variation_sale_price_html'、'sale_price_custom_label',10,2);
添加过滤器('woocommerce\u sale\u price\u html'、'sale\u price\u custom\u labels',10,2);
功能销售价格定制标签($price,$product){
if(isset($product->销售价格)){
$price=''。uuu('Old price:','woocommerce')。woocommerce_uprice($product->regular_uprice)。'
“.”(“新价格:”,“woocommerce”)。woocommerce价格($product->sale价格)。”;
}
其他的
{
$price=''.woocommerce\u price($product->regular\u price)。'';
}
返回$price;
}
添加过滤器('woocommerce\u variable\u sale\u price\u html'、'sale\u price\u custom\u labels\u min\u max',20,2);
功能销售\价格\自定义\标签\最小\最大($price,$product){
$variation\u min\u reg\u price=$product->get\u variation\u regular\u price('min',true);
$variation\u max\u reg\u price=$product->get\u variation\u regular\u price('max',true);
$variation\u min\u sale\u price=$product->get\u variation\u sale\u price('min',true);
$variation\u max\u sale\u price=$product->get\u variation\u sale\u price('max',true);
如果($variation_min_reg_price!=$variation_min_sale_price | |$variation_max_reg_price!=$variation_max_sale_price)
{
如果($variation\u min\u reg\u price==$variation\u max\u reg\u price&&$variation\u min\u sale\u price==$variation\u max\u sale\u price){
$price=''。uuuu('旧价格:','woocommerce')。woocommerce价格($variation\u max\u reg\u price)。'
“.”(“新价格:”,“woocommerce”)。woocommerce价格($variation\u max\u sale\u Price)。”;
}
其他($variation\u min\u reg\u price!=$variation\u max\u reg\u price&$variation\u min\u sale\u price==$variation\u max\u sale\u price)
{
$price='.'.'旧价格:','woocommerce')。woocommerce价格($variation\u min\u reg\u price)。'-'.woocommerce价格($variation\u max\u reg\u price)。'
“.”(“新价格:”,“woocommerce”)。woocommerce价格($variation\u max\u sale\u Price)。”;
}
其他($variation\u min\u reg\u price==$variation\u max\u reg\u price&$variation\u min\u sale\u price!=$variation\u max\u sale\u price)
{
$price=''。uuuu('旧价格:','woocommerce')。woocommerce价格($variation\u max\u reg\u price)。'
“新价格:”、“woocommerce”)。woocommerce价格($variation\u min\u sale\u Price)。-“woocommerce价格($variation\u max\u sale\u Price)。”;
}
其他的
{
$price='.'.'旧价格:','woocommerce')。woocommerce价格($variation\u min\u reg\u price)。'-'.woocommerce价格($variation\u max\u reg\u price)。'
“新价格:”、“woocommerce”)。woocommerce价格($variation\u min\u sale\u Price)。-“woocommerce价格($variation\u max\u sale\u Price)。”;
}
}
返回$price;
}
您还可以用其他内容替换正常的
html标记,并更改或添加一些类(如果您更方便)。此时,一切都是可能的。

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

此代码经过测试并正常工作



相关答案:

这是正确的,我知道……但我希望在两个价格周围贴上标签,上面写着“旧价格:100美元”-“新价格:90美元”,而不是“100美元-90美元”。您需要在旧价格和新价格之前添加代码:)我知道…这就是我在这里问的原因…这个过滤器应该是什么样子的?我不想在这种情况下写模板。也许这个答案可以帮助你…而且你只有简单的产品吗?工作得非常好!但在一种情况下,它不起作用…如果一个产品在销售中,并且在产品变体中也可用(例如,不同颜色)这不起作用。你对此有什么解决方案吗?@user6573193更新了我的答案,为这两种产品类型(简单和可变产品)提供了功能测试和工作代码谢谢!我对答案投了赞成票!我发现了一个小错误…如果一个产品变体在每个变体中的成本相同,则标签为“新价格:130-130美元”-您对此有任何解决方案吗?@user6573193我已解决此错误并更新了我的代码…