woocommerce的价格定制

Prices customization for woocommerce

提问人:Captain Krik 提问时间:10/30/2023 更新时间:11/2/2023 访问量:46

问:

在WooCommerce中,可以在产品循环和单个产品页面中仅显示含税或不含税的价格。此外,如果一种产品正在销售,Woocommerce 会显示正常价格,例如划掉的价格和销售价格。这是默认的。

我发现许多工作片段可以根据我的需求定制价格,但有些代码段也覆盖了我喜欢保留的内容:例如,如果定义了销售价格,我会松开常规价格。 我正在寻找一个清晰的代码,允许我:

  1. 显示常规价格和销售价格,适用于简单和可变产品
  2. 显示含税和不含税的价格,并附加自定义文本(含税;不含税)

这也适用于产品循环和单个产品页面。

感谢您的任何建议。

PHP WordPress WooCommerce 产品 价格

评论

0赞 Captain Krik 10/31/2023
为什么我的问题有负值?对不起,但如果你不发表评论,我无法理解我的问题有什么问题,我不能尝试做得更好。谢谢

答:

2赞 Druvi Shah 10/31/2023 #1

此代码应添加到主题的functions.php文件中

add_filter('woocommerce_get_price_html', 'display_both_prices', 10, 2);
function display_both_prices($price, $product) {
    if ($product->is_type('variable')) {
        $min_price = $product->get_variation_price('min', true);
        $max_price = $product->get_variation_price('max', true);

        if ($min_price !== $max_price) {
            $price = wc_format_price($min_price) . ' - ' . wc_format_price($max_price);
        } else {
            $price = wc_price($min_price);
        }
    } else {
        if ($product->is_on_sale()) {
            $regular_price = wc_price($product->get_regular_price());
            $sale_price = wc_price($product->get_sale_price());
            $price = '<del>' . $regular_price . '</del> <ins>' . $sale_price . '</ins>';
        } else {
            $price = wc_price($product->get_price());
        }
    }
    return $price;
}

并显示含税和不含税的价格以及自定义文本:

add_filter('woocommerce_get_price_html', 'display_price_with_tax', 10, 2);
function display_price_with_tax($price, $product) {
    $price_incl_tax = wc_price($product->get_price_including_tax());
    $price_excl_tax = wc_price($product->get_price_excluding_tax());
    $custom_text = ' (incl. tax: ' . $price_incl_tax . ', excl. tax: ' . $price_excl_tax . ')';
    return $price . $custom_text;
}

评论

0赞 Captain Krik 11/2/2023
谢谢德鲁维。这正是我一直在寻找的,简单明了的代码。经过测试并有效!与此同时,我也努力寻找一个更具体的解决方案,以满足我的需求。我发布我的代码,以防它可以帮助其他有类似需求的人。
0赞 Captain Krik 11/2/2023 #2

我找到了一个完全符合我需求的解决方案。 这段代码符合我在原始请求中的要求,就像 Druvi 回答一样(感谢 Druvi)。

附加功能:

  • 在销售价格之前添加自定义文本。

  • 如果产品带有“noleggio”(租赁)标签,则显示自定义文本,如果产品带有“Vendita”(购买)标签,则显示其他文本。

  • 如果销售产品具有销售日期,则会在产品循环和单个产品页面中显示到期日期。

希望可以帮助别人。

为正常价格、促销价格和特定标签添加文本:

function ckde_sale_price_html( $price, $product ) {
$excl_tax = sprintf( __("escl. IVA") );
if ( $product->is_on_sale() ) {

if ( has_term( 'noleggio', 'product_tag' )) {
$has_sale_text = array(
'<ins>' => '<br>Prezzo in offerta: &nbsp;</ins>'
);

$return_string = str_replace(array_keys( $has_sale_text ), array_values( $has_sale_text ), $price . '<br><span class="woocommerce-price-suffix exc-vat-price">' . $day_excl_tax .'</span>');

} elseif ( has_term( 'vendita', 'product_tag' ) ) {
$has_sale_text = array(
'<ins>' => '<br>Prezzo in offerta: &nbsp;</ins>'
);

$return_string = str_replace(array_keys( $has_sale_text ), array_values( $has_sale_text ), $price . '<br><span class="woocommerce-price-suffix exc-vat-price">' . $excl_tax .'</span>');

} else {

$return_string = $price . '<br><span class="woocommerce-price-suffix exc-vat-price">' . $day_excl_tax .'</span>';
}
} else {
if ( has_term( 'noleggio', 'product_tag' )) {
$return_string = $price . '<br><span class="woocommerce-price-suffix exc-vat-price">' . $day_excl_tax .'</span>';

} elseif ( has_term( 'vendita', 'product_tag' ) ) {

$return_string = $price . '<br><span class="woocommerce-price-suffix exc-vat-price">' . $excl_tax .'</span>';
}
}

return $return_string;

}

add_filter( 'woocommerce_get_price_html', 'ckde_sale_price_html', 100, 2 );

在 Woocommerce 循环产品和单个产品页面中添加带有销售日期的自定义文本,其中包含销售价格后的销售日期:

add_filter( 'woocommerce_sale_flash', 'ckde_sale_end_date', 9999, 3 );
     
function ckde_sale_end_date( $html, $post, $product ) {
if ( $product->get_date_on_sale_to() ) return $html . ' <span class="onsale-date">(In offerta fino a: ' . gmdate( 'd M Y', $product->get_date_on_sale_to()->getTimestamp() ) . ')</span>';

return $html;

}