Добавяне на нова валута в WooCommerce

Изглеждаше ми, че добавянето на нова валута (като лв. например) би било лесно с WooCommerce, но не би. Не можах да намеря никакъв wp filter в документацията (филтър има, но се оказа трудно откриваем)

Edit: Пуснах плъгин, който добавя BGN лев като валута към WooCommerce. Може да го свалите от тук

Все пак успях да намеря 2 филтъра (явно недокументирани) за тази задача: ‘woocommerce_currencies’ и ‘woocommerce_currency_symbol’. Добавянето на BGN става по следния начин:

add_filter( 'woocommerce_currencies', 'add_bgn_currency' );
function add_bgn_currency( $currencies ) {
 $currencies['BGN'] = __( 'Bulgarian lev', 'woocommerce' );
 return $currencies;
}
add_filter('woocommerce_currency_symbol', 'add_bgn_currency_symbol', 10, 2);
function add_bgn_currency_symbol( $currency_symbol, $currency ) {
 switch( $currency ) {
 case 'BGN': $currency_symbol = 'лв.'; break;
 }
 return $currency_symbol;
}

След като добавите този код в списъка с валутите в админситрацията на WooCommerce ще ви се появи и заветния лев (най-отдолу):

WooCommerce Currency Settings
WooCommerce Currency Settings

Все пак един проблем продължава да стои отворен – позицията на символа за валута не може да се управлява от hook/filter. Единственото, което може да направите е да го зададете за целия сайт. (Дори локализиращите настройки с WPML не предоставят тази опция. И дори тази конфигурация е поставена на не-толкова-интуитивно място:

Продължавам да се чудя как да го направя с php only. В краен случай може да пробвам с good old JS.


//

12 comments

  1. Евала Ниньо, спести ми доста главоблъскане в търсене на тоя пуст филтър.
    Все пак не е вярно, че го няма описано в документацията (http://wcdocs.woothemes.com/snippets/add-a-custom-currency-symbol/), но важното е, че публикацията ти излиза преди това в търсенето.

    10х,
    Стефан

    1. И аз го видях това, но в последствие – след като го бях намерил в кода на плъгина. И все пак е куцо, че не можеш да имаш позицията на валутата да се сменя според езика.

  2. Евалата, батка! Сложих кода във functions.php и тръгна веднага. Пушка е! 🙂 Малко са просветителите на български. На руски обаче намерих доста видеа в Тубата. Иначе резултатите са общо над 650. Благодаря! (Жалко че нямаш адсенс да ти го накликам) 🙂

  3. Мерси много за инфото, но при мен има проблем. На продуктите вместо „лв.“ показва „��“. Предполагам нещо ми убягва ?

    1. Здрасти Стеф,
      Да не би темата ти да използва някакъв custom шрифт специално за този надпис. (Ако този шрифт няма кирилица може това да е проблема).
      Другото нещо което може да е, че файлът в който си запазил кода е с грешен енкодинг (пробвай да го смениш на utf8).

  4. Извинявам се за въпроса, но къде точно се намира този „списък с валути в админситрацията на WooCommerce“, че и аз се опитвам да добавя лева, но нещо ми убягва.

    1. Трябва да се яви в WooCommerce->Settings.
      Първият таб, който трябва да ти е вече отворен (General), 2-я дропдаун се казва Currency. Добавените валути се явяват най-отдолу. 🙂

  5. Браво, наистина е пушка обаче има проблем с paypal не разпознава валутата можели някой да помогне за проблема. В крайна сметка ако е само с плащане по банков път то, какъв магазин е това.

Leave a comment

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.