如何在 WooCommerce 中簡單和可變產品的銷售價格下方顯示“您節省 x%”
已發表: 2019-04-03我們都知道折扣如何吸引客戶並增加銷售額。 但如今,僅顯示您以較低的價格出售商品是不夠的,所有零售商和電子商務網站都同時提供折扣。 當只顯示新舊價格時,客戶需要進行數學計算以計算他實際節省了多少。 處理此問題的更好方法是顯示客戶在購買時節省的金額的百分比。 這為他們提供了更好的想法和更簡單的方法來決定是否進行購買。 讓我們看看如何在 WooCommerce 中簡單和可變產品的銷售價格旁邊顯示“You Save x%”。
如何在簡單產品的銷售價格以下顯示您節省 %
一旦知道常規價格和銷售價格,對於簡單產品來說,顯示節省金額的百分比就很容易了。 在正常情況下,簡單產品的這些價格顯示如下:

將以下代碼添加到您的子主題的functions.php 文件中,將在簡單產品的價格下方顯示“You Save x%”,以便用戶立即了解交易的好壞。
功能 ts_you_save() {
全球$產品;
if( $product->is_type('simple') || $product->is_type('external') || $product->is_type('grouped') ) {
$regular_price = get_post_meta( $product->get_id(), '_regular_price', true );
$sale_price = get_post_meta( $product->get_id(), '_sale_price', true );
如果(!empty($sale_price)){
$amount_saved = $regular_price - $sale_price;
$currency_symbol = get_woocommerce_currency_symbol();
$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
?>
<p><b>你保存:<?php echo number_format($percentage,0, '', '').'%'; ?></b></p>
<?php
}
}
}
add_action('woocommerce_single_product_summary','ts_you_save',11);在這個代碼片段中,我們在內置的 WooCommerce 鉤子woocommerce_single_product_summary中添加了一個函數ts_you_save() ,它指向產品標題下方的區域。 函數ts_you_save()識別產品的類型併計算產品在銷售時節省的金額百分比。 通過添加一些 CSS,您可以按照您想要的方式打印它:

如果要顯示節省的金額和百分比,可以通過以下方式稍微修改相同的代碼段:
功能 ts_you_save() {
全球$產品;
if( $product->is_type('simple') || $product->is_type('external') || $product->is_type('grouped') ) {
$regular_price = get_post_meta( $product->get_id(), '_regular_price', true );
$sale_price = get_post_meta( $product->get_id(), '_sale_price', true );
如果(!empty($sale_price)){
$amount_saved = $regular_price - $sale_price;
$currency_symbol = get_woocommerce_currency_symbol();
$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
?>
<p><b>你省了:<?php echo number_format($amount_saved,2, '.', '')." (".number_format($percentage,0, '', '')."%)" ; ?></b></p>
<?php
}
}
}
add_action('woocommerce_single_product_summary','ts_you_save',11);number_format函數是一個內置的 PHP 函數,它接受 4 個參數:
- 數字或在我們的例子中,分別是節省的金額和百分比(我們已經使用了兩次該函數)。
- 小數位數。 我們將節省的金額設置為 2,將百分比設置為 0,因為我們不希望顯示百分比的任何十進制值。
- 您希望使用的小數分隔符。 我們已將其設置為一個點 (.) 用於保存的金額和一個空白值用於百分比。
- 千位分隔符。 如果節省的金額超過 1000,則可以使用此參數。 我們目前已將其設置為空白。
保存的金額以及百分比現在將顯示在價格下方:

如何顯示您節省的百分比低於可變產品的銷售價格
當涉及到可變產品時,這變得很棘手,因為產品的每個變體都可能有不同的價格。 例如,一件大號的 T 恤的價格可能較高,而同一件小號的 T 恤的價格可能較低。 對於此類情況,WooCommerce 在產品標題下方顯示銷售價格範圍,而當選擇變體時,產品每個變體的常規和銷售價格顯示在“添加到購物車”按鈕上方。 下圖說明了這一點:

在這種情況下,我們將打印“您節省”文本以及節省的百分比,低於為特定變體顯示的價格。 您需要將代碼片段添加到您的子主題的functions.php和footer.php文件中。

您將在 footer.php 文件中添加的以下代碼片段包含一個在更改變體時觸發的函數。 在我們的例子中,這是在使用尺寸下拉選擇或更改尺寸變化時觸發的。 此函數捕獲特定的變體 id 並通過 ajax 調用將其發送到 functions.php。
<腳本>
jQuery(文檔).ready(函數($) {
$('input.variation_id').change(function(){
if( '' != $('input.variation_id').val() ) {
var var_id = $('input.variation_id').val(); // 您選擇的變體 ID
$.ajax({
url: "https://<your_woocommerce_site_url>/wp-admin/admin-ajax.php",
數據:{'action':'ts_calc_percentage_saved','vari_id': var_id},
成功:函數(數據){
如果(數據>0)
{
$( ".woocommerce-variation-price" ).append( "<p>You Save: "+data+"%</p>");
}
},
錯誤:函數(errorThrown){
console.log(errorThrown);
}
});
}
});
});
</腳本>
您需要將<your_woocommerce_site_url>替換為您的 WooCommerce 網站的基本 URL。
您將在 functions.php 文件中添加的以下代碼片段包含一個函數ts_calc_percentage_saved ,它根據變體 id 獲取產品的正常價格和銷售價格,計算百分比並將其返回到頁腳中的 ajax 函數。 .php 文件。
//這是在WordPress中掛鉤由ajax調用的函數的方式
add_action("wp_ajax_ts_calc_percentage_saved", "ts_calc_percentage_saved");
//下面的函數是通過footer.php中的ajax腳本調用的
函數 ts_calc_percentage_saved(){
// $_REQUEST 包含通過 ajax 發送的所有數據
if ( isset($_REQUEST) ) {
$百分比=0;
$variation_id = sanitize_text_field($_REQUEST['vari_id']);
$variable_product = wc_get_product($variation_id);
$regular_price = $variable_product->get_regular_price();
$sale_price = $variable_product->get_sale_price();
如果(!empty($sale_price)){
$amount_saved = $regular_price - $sale_price;
$currency_symbol = get_woocommerce_currency_symbol();
$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
}
死($百分比);
}
}sanitize_text_field()函數是一個 WordPress 函數,它有助於清理我們從客戶端收到的輸入。
因此,您現在將看到“您節省了”以及節省的金額百分比,低於變化的價格。

您可以在 ajax 函數本身中設置任何您希望的樣式,方法是在此行的 append 函數中添加 HTML 和 CSS:
$( “.woocommerce-variation-price” ).append( “<p>You Save: “+data+”%</p>”);
在產品標題下方而不是可變產品的“添加到購物車”按鈕上方顯示 You Save %
如果您願意,您可以在產品標題下方而不是在“添加到購物車”按鈕上方顯示您保存的文本以及保存的百分比,方法是向上述代碼片段添加更多代碼片段。
除了上面提到的代碼片段(在footer.php 和functions.php 文件中)之外,應該將這段代碼添加到您的子主題的functions.php 文件中。
//下面的代碼是改變價格
函數 ts_shuffle_variable_product_elements(){
如果 ( is_product() ) {
全球 $post;
$product = wc_get_product($post->ID);
if ( $product->is_type( '變量' ) ) {
remove_action('woocommerce_single_variation','woocommerce_single_variation',10);
add_action('woocommerce_before_variations_form','woocommerce_single_variation',20);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
add_action('woocommerce_before_variations_form','woocommerce_template_single_title',10);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
add_action('woocommerce_before_variations_form','woocommerce_template_single_excerpt',30);
}
}
}
add_action('woocommerce_before_single_product','ts_shuffle_variable_product_elements');這段代碼的本質是刪除元素(包括標題)並按照您想要的方式重新排列它們。 結果是價格範圍被刪除,並且當您選擇變體時顯示變體價格,以及它下方的 You Save 文本,如圖所示:

