2015-12-19 1 views
2

Я использую woocommerce, и я бы хотел сократить все цены на продукцию до K (для тысяч) и M (за миллион). Таким образом, 150 000 будут 150 КБ, 2500 000 - 2,5 М и т. Д. Как мне это сделать?Преобразование тысяч в K, от миллиона до M в woocommerce

Спасибо!

+2

Возможные дубликат [Сократить длинные номера в K/M/B?] (Http://stackoverflow.com/questions/4371059/shorten-long- цифры-к-км) – Tristan

+0

Код не моя чашка чая. Раньше я видел ваш вопрос, прежде чем писать. Все еще не знаю, как добавить код, не говоря уже о плагине woocommerce. –

ответ

3
add_filter('woocommerce_price_html','rei_woocommerce_price_html', 10, 2); 
add_filter('woocommerce_sale_price_html','rei_woocommerce_price_html', 10, 2); 
function rei_woocommerce_price_html($price, $product) { 

    $currency = get_woocommerce_currency_symbol(); 
    $price = $currency . custom_number_format($product->get_price(),1); 

    return $price; 
} 

function custom_number_format($n, $precision = 3) { 
    if ($n < 1000000) { 
     // Anything less than a million 
     $n_format = number_format($n); 
    } else if ($n < 1000000000) { 
     // Anything less than a billion 
     $n_format = number_format($n/1000000, $precision) . 'M'; 
    } else { 
     // At least a billion 
     $n_format = number_format($n/1000000000, $precision) . 'B'; 
    } 

    return $n_format; 
} 

пара вещей, чтобы отметить здесь ..

  1. woocommerce_sale_price_html не включает первоначальную цену .. вы должны кодироваться.
  2. логика валютного формата на WooCommerce игнорируется. вам может потребоваться настроить код в соответствии с вашими потребностями.
+0

Он работает! Только на странице магазина tho, а не на странице корзины - что важно, потому что корзина стола беспорядок на мобильном телефоне, t00 много 0s. Как вы думаете, вы можете добавить фильтр для таргетинга только на субтотал на странице корзины? Поскольку я избавляюсь от столбца цены, чтобы уменьшить таблицу. Что-то вроде 'add_filter ('woocommerce_order_amount_subtotal', 'rei_woocommerce_order_amount_subtotal', 10, 2); Функция rei_woocommerce_order_amount_subtotal ($ subtotal, $ product) { $ currency = get_woocommerce_currency_symbol(); $ subtotal = $ currency. custom_number_format ($ продукт-> get_subtotal(), 1); return $ subtotal; } ' –

+0

загляните внутрь шаблонов woocommerce, найдите cart.php, вы получите подсказку. попробуйте ввести код и вернуться, если у вас есть проблемы. так работает stackoverflow. – Reigel

0

Я думаю, что это поможет вам

<?php 
     $n = 265460; 

     function bd_nice_number($n) { 

      $n = (0+str_replace(",","",$n)); 


      if(!is_numeric($n)) return false; 


      if($n>1000000000000) return round(($n/1000000000000),1).'-T'; 
      else if($n>1000000000) return round(($n/1000000000),1).'B'; 
      else if($n>1000000) return round(($n/1000000),1).'M'; 
      else if($n>1000) return round(($n/1000),1).'K'; 

      return number_format($n); 
     } 

     $v = bd_nice_number($n); 
     echo $v; 
    ?> 
Смежные вопросы