2017-02-10 19 views
3

На одном продукте WooCommerce, если продукт владеет продажной ценой, нормальная цена вычеркнута, а за ней цена продажи выделена.Добавление пользовательских текстовых меток в цены, когда товары продаются

Мой вопрос:
Как я могу добавить метку как "Old Price: XX Dollar" и "New Price: XX Dollar" вместо только вычеркнуты и новая цена (цена продажи)?

+0

может быть этот ответ может помочь вам. http://stackoverflow.com/a/41410818/5019802. и у вас есть только простой продукт? –

ответ

5

Update 2 (для простых и переменных продуктов + решена ошибка по тем же ценам вариации)

, когда продукты на продажу, вы можете добавить пользовательские метки так же, как вы хотите использовать пользовательскую функцию зацепили в woocommerce_sale_price_html и woocommerce_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

 Смежные вопросы

  • Нет связанных вопросов^_^