Cómo ocultar una pasarela de pago por moneda en el checkout
No todas las pasarelas de pago pueden liquidar en cualquier moneda. Ocultar las que no pueden es lo que evita que un checkout multimoneda termine en un pago fallido.
A veces es necesario ocultar la pasarela de pago en la página de checkout en modo múltiple dependiendo de la moneda actual. Desde la versión 2.2.7/1.1.7, usa las opciones en la pestaña "Payments Rules" de la página de configuración del plugin:
Desde la versión 2.1.4/1.1.4 se ha implementado una clase CSS adicional en la etiqueta <body>. Ejemplo: currency-usd, donde usd es la moneda actual. Por lo tanto, a partir de ahora es muy fácil ocultar cualquier pasarela en el checkout según tu lógica simplemente usando CSS.
Vía con código -> en el archivo functions.php del tema actual de WordPress, añade el siguiente script PHP:
add_filter('woocommerce_available_payment_gateways', 'woocs_filter_gateways', 1);
function woocs_filter_gateways($gateway_list)
{
global $WOOCS;
$exclude = array(
'paypal' => array('EUR', 'GBP'), //do not show paypal gate if current currency is EUR or GBP
'stripe' => array('USD')//do not show stripe gate if current currency is USD
);
//***
foreach ($exclude as $gateway_key => $currencies)
{
if (isset($gateway_list[$gateway_key]) AND in_array($WOOCS->current_currency, $currencies))
{
unset($gateway_list[$gateway_key]);
}
}
return $gateway_list;
}
Más ejemplos:
-
add_filter('woocommerce_available_payment_gateways', 'woocs_filter_gateways', 1); function woocs_filter_gateways($gateway_list) { if (WC()->cart->subtotal > 1000) { unset($gateway_list['cod']); } return $gateway_list; } - _