Thread Starter
Diego
(@daigo75)
Abbiamo apportato le modifiche necessarie per correggere il plugin. Se c’è un repository pubblico, possiamo inviare una Pull Request per integrarle nel plugin principale. In alternativa, la classe modificata è disponibile su Github.
Thread Starter
Diego
(@daigo75)
@sardbaba just checking if you saw my last message. Thanks.
Salve Diego
scusami ma non mi è arrivata la notifica del messaggio. Non ho rilasciato il codice in un repo git ma appena riesco testerò le tue modifiche e le includerò nella prossima release.
Grazie, un saluto
Thread Starter
Diego
(@daigo75)
Grazie. Le abbiamo testate più volte in locale e tutto funziona. Si tratta di tre righe di codice, alla fine, che cambiano quanto segue:
- Le transazioni usano la valuta associata all’ordine (che non è sempre quella di base).
- I parametri da inviare al server remoto sono fatti passare attraverso un filtro, in modo da poterli modificare dinamicamente. Questo è indispensabile per consentire integrazioni da parte di terzi, come quella che ci è stata richiesta.
Salve Diego
si ho visto, grazie.
Giusto una cosa: non sapendo esattamente quando in Woocommerce è stata introdotto il metodo get_order_currency, per assicurare la retrocompatibilità ho usato:
$the_currency = method_exists($order, 'get_order_currency') ? $order->get_order_currency() : get_option( 'woocommerce_currency' );
A breve rilascerò un update che include anche l’aggiunta del parametro utm_nooverride per Analytics.
Un saluto
Thread Starter
Diego
(@daigo75)
Il metodo è stato introdotto in WooCommerce 2.1. La versione 2.0 è più che obsoleta, ma, se vuoi garantire il supporto per la medesima, il codice corretto è
$the_currency = method_exists($order, 'get_order_currency') ? $order->get_order_currency() : get_post_meta($order->id, '_order_currency', true);
Mai usare la get_option(), in quanto restituisce sempre la valuta di base, che non ha nulla a che vedere con la valuta in cui è stato completato l’ordine. Per essere più precisi, sono due concetti distinti, il fatto che la seconda sia spesso uguale alla prima è un caso, su cui non si può fare affidamento.
Per completezza
- get_option(‘woocommerce_currency’) – Valuta di base. Utile in rari casi, normalmente solo in fase di configurazione.
- get_woocommerce_currency() – Valuta attiva al momento. In configurazioni a valuta unica, corrisponde alla valuta di base. In configurazioni a valuta multipla, non è detto. È perciò preferibile usare questo metodo, se si vuole la valuta attiva in un determinato momento.
- $order->get_order_currency(), equivalente di get_post_meta($order->id, ‘_order_currency’, true) – Valuta associate a un ordine. È la valuta da utilizzare per i pagamenti.
Fonte
Tre anni di esperienza nello sviluppo di soluzioni multi-valuta e multi-prezzo per WooCommerce. 🙂
Grazie Diego, accetto volentieri la tua correzione che mi sembra più che giusta e ti ringrazio anche per le precisazioni molto utili.
Presto arriverà l’update del plugin.
Un saluto