2017-02-10 41 views
3

在WooCommerce產品單頁上,如果產品擁有銷售價格,則將正常價格劃掉,並在其後面突出顯示銷售價格。在產品銷售時向價格添加自定義文本標籤

我的問題:
我怎麼可以添加像"Old Price: XX Dollar""New Price: XX Dollar",而不是一個標籤只劃掉,新價格(銷售價格)?

+0

可能是這樣的回答可以幫助你。 http://stackoverflow.com/a/41410818/5019802。你有沒有簡單的產品? –

回答

5

更新2(適用於簡單和變型產品+解決了在同一變化價格的bug)

當產品都在打折,你可以添加自定義標籤,就像你想使用自定義函數在woocommerce_sale_price_htmlwoocommerce_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文件或也以任何插件文件。

此代碼已經過測試並可正常工作。


相關答案:Conditional custom output around products sale price and regular price

+0

工作得很好!但在一種情況下,它不起作用......如果某產品在銷售中,並且也可用於產品變體(例如以不同的顏色),則此功能無效。你有任何解決方案嗎? – user6573193

+1

@ user6573193將兩種產品類型(簡單和可變產品)的功能測試和工作代碼更新爲我的答案 – LoicTheAztec

+0

謝謝!我提出了答案!我發現了一個小錯誤...如果產品差異在每個變體中花費相同,標籤是「新價格:130-130美元」 - 您有任何解決方案嗎? – user6573193

0

在管理方面你需要定義你的銷售價格和實際價格,所以它會自動反映在你的舊價格和新價格的前面。

此外,你需要爲此做一些代碼。

+0

這是正確的,我知道...但我想要一個標有「舊價格:100美元」 - 「新價格:90美元」兩個價格的標籤 而不是「-100美元 - 90美元」 – user6573193

+0

您需要在舊的價格和新的價格之前添加代碼:) –

+0

我知道...這就是我爲什麼要問這裏的原因...這個過濾器怎麼樣?在這種情況下,我不想寫在模板中。 – user6573193

相關問題