提问人:Captain Krik 提问时间:10/30/2023 更新时间:11/2/2023 访问量:46
woocommerce的价格定制
Prices customization for woocommerce
问:
在WooCommerce中,可以在产品循环和单个产品页面中仅显示含税或不含税的价格。此外,如果一种产品正在销售,Woocommerce 会显示正常价格,例如划掉的价格和销售价格。这是默认的。
我发现许多工作片段可以根据我的需求定制价格,但有些代码段也覆盖了我喜欢保留的内容:例如,如果定义了销售价格,我会松开常规价格。 我正在寻找一个清晰的代码,允许我:
- 显示常规价格和销售价格,适用于简单和可变产品
- 显示含税和不含税的价格,并附加自定义文本(含税;不含税)
这也适用于产品循环和单个产品页面。
感谢您的任何建议。
答:
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: </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: </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;
}
评论