
WooCommerce е мощен e-commerce плъгин за създаване на електронни магазини. Въпреки неговата богата функционалност е възможно да се сблъскате с някои проблеми, когато става дума за валута.
Тези проблеми и разрешението сме разгледали по-долу:
1. Как се добавя валута на държава, която я няма в списъка.
2. Как се променят валутните единици (например лв.) спрямо новодобавената валута.
3. Как да накараме WooCommerce да позволи Paypal, въпреки че валутата ни не се поддържа.
1. Ако в падащия списък в основните настройки на WooCommerce не намерим желаната валута, ще се наложи да я добавим. Да кажем, че искаме да добавим ‘Bulgarian Lev (лв.)’. Можем да направим това като поставим този код във functions.php файла на темплейта, който ползваме.
add_filter( 'woocommerce_currencies', 'add_bgn_currency' ); function add_bgn_currency( $currencies ) { $currencies['BGN'] = __( 'Bulgarian Lev (лв.)', 'woocommerce' ); return $currencies; }
$currencies[‘BGN’] – вместо ‘BGN’ можем да сложим друг низ, важно е обаче да знаем, че от тук нататък с него ще се идентифицира нашата валута.
‘Bulgarian Lev (лв.)’ – това е символният низ, който искаме да се появява в падащия списък с валутите.
(За информация филтърът се прилага в woocommerce\admin\settings\settings-init.php)
2. Сега трябва да добавим валутни единици. Под предния код можем да поставим следния:
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; }
case ‘X’ – ако по-горе сме декларирали $currencies[‘X’], където X в нашия случай е BGN
$currency_symbol = ‘лв.’ – валутният символ, който ще използваме в нашите цени.
(За информация филтърът се прилага в woocommerce\woocommerce-core-functions.php)
Ако валутният символ се появява пред цената, а не зад нея и желаете това да се промени, това става от администраторския панел -> WooCommerce-> Настройки-> Каталог-> Настройки на цените-> от падащото меню ‘Позиция на валутния знак’ избираме ‘Дясно (с разстояние)’. Това ще даде вид на цените например: ‘100 лв.’
3. Първият проблем, с който можем да се сблъскаме ако решим да използваме Paypal с новата валута е грешка при достъп до Paypal настройките в администраторския панел на WooCommerce. Да накараме Paypal да бъде достъпен като начин на плащане е първата стъпка.
Ще използваме следния филтър за да добавим „BGN“ към масива с валидни валути за PayPal:
add_filter( 'woocommerce_paypal_supported_currencies', 'add_bgn_paypal_valid_currency' ); function add_bgn_paypal_valid_currency( $currencies ) { array_push ( $currencies , 'BGN' ); return $currencies; }
(Филтърът се прилага в woocommerce/classes/gateways/paypal/class-wc-paypal.php).
Друг проблем е че Paypal не борави с валутната единица лев, която добавихме. Тогава ще е добре преди плащане, сумите ни да могат да се преобразуват във валута, която Paypal поддържа, например евро. Можем да добавим следния филтър при останалите:
add_filter('woocommerce_paypal_args', 'convert_bgn_to_eur'); function convert_bgn_to_eur($paypal_args){ if ( $paypal_args['currency_code'] == 'BGN'){ $convert_rate = 1.954; //set the converting rate $paypal_args['currency_code'] = 'EUR'; //change BGN to EUR $i = 1; while (isset($paypal_args['amount_' . $i])) { $paypal_args['amount_' . $i] = round( $paypal_args['amount_' . $i] / $convert_rate, 2); ++$i; } } return $paypal_args; }
Проверяваме дали $paypal_args[‘currency_code’] == ‘X’, където X се определя в $currencies[‘X’] от точка 1. В нашия случай X е BGN.
‘BGN’ обаче не се поддържа от Paypal, за това го променяме на ‘EUR’. Осталото са преобразувания на сумите, които трябва да се платят от лева в евро.
(За информация филтърът се прилага в woocommerce\classes\gateways\paypal\class-wc-paypal.php)
Ако информацията ви е била полезна, сподeлете я в социалните мрежи като използвате бутоните по-долу.
Светослав Стоянов
Latest posts by Светослав Стоянов (see all)
- Места за посещение в Родопите - август 25, 2020
- Вижте обновения сайт на списание „Органично“ - юни 6, 2014
- Продуктите на Shock Doctor вече и на българския пазар! - февруари 20, 2014