Quitar formas de pago por país en Woocommerce
Quitar formas de pago por país en Woocommerce es una tarea que debe hacer cualquier comercio que necesita vender en muchos países.
[lwptoc]Como sabemos, Woocommerce tiene campos como país o estado en su formulario de pago y estos ayudarán para hacer esta tarea.
Antes de todo, debemos conocer los códigos cortos de cada pasarela de pago para poder jugar con ellos. Aquí una tabla con las pasarelas más conocidas.
Nombre corto | Nombre largo |
---|---|
cod | Pago contra entrega |
bacs | Transferencia bancaria |
cheque | Cheques |
paypal | Paypal |
stripe | Stripe |
fullculqi | Culqi |
payme | Payme |
Ahora que conocemos estos nombres cortos, podemos quitarlos o agregarlos como queramos. Nosotros usaremos el hook woocommerce_available_payment_gateways para hacerlo.
A continuación 2 ejemplos de: Quitar formas de pago por país en Woocommerce
Ejemplo 1: Si el país es AR, quitaremos la pasarela Paypal y si el país es US, quitaremos las pasarelas Culqi y Payme.
<?php function letsgo_remove_gateways($gateways = []) { $country = WC()->customer->get_billing_country(); switch($country) { case 'AR' : unset( $gateways['paypal'] ); break; case 'US' : unset($gateways['fullculqi']); unset($gateways['payme']); break; } return $gateways; } add_filter( 'woocommerce_available_payment_gateways', 'letsgo_remove_gateways', 10, 1);
Ejemplo2: Si el país es US y el estado es Florida ( FL ), usaremos Paypal como único método de pago.
<?php function letsgo_add_gateways($gateways = []) { $country = WC()->customer->get_billing_country(); $state = WC()->customer->get_billing_state(); $aux_gateways = $gateways; if( $country == 'US' && $state == 'FL' ) { foreach( $aux_gateways as $key => $data ) { if( $key == 'paypal' ) continue; unset($gateways[$key]); } } return $gateways; } add_filter( 'woocommerce_available_payment_gateways', 'letsgo_add_gateways', 10, 1);
Recuerda que debes poner este código en tu functions.php de tu theme activo.
Amigo, ESTUPENDO POST.
Me salió este error en el código.
Parse error: syntax error, unexpected ‘<', expecting end of file in /home/xktecno3/public_html/economizadores.net/wcontenido/themes/Divi/functions.php on line 7255
Hola.
Creo que copiaste todo el codigo sin considerar las aperturas de código php.
El error viene de esto :
«
Hola, como podría agregar eliminar mas estados en tu ejemplo #2, ahora el código es para eliminar solo Florida, pero si deseo eliminar mas Estados que código tendría que agregar?
Gracias!!!
Hola Pedro.
Podrías agregar más condicionales en la parte de :
&& ( $state == ‘FL’ || $state == ‘UG’ || $state == ‘AC’ )
o también podes reemplazarlo por un in_array() de este modo:
&& in_array( $state, [‘FL’, ‘UG’, ‘AC’] )
Saludos
Ej: quiero que transferencia solo aplique para España y no se vea en ningún otro lugar.
Es posible quitar todos los países para un medio de pago y que solo aplique para uno en particular.
Sí, en vez de usar == usamos el operador !=, es decir:
if ( $country != ‘ES’ )
Y con eso ya está.
Saludos