Snippets para Woocommerce

Eliminar métodos de pagos a países o ciudades en Woocommerce

Por Diegol

Actualizado el 8 de febrero de 2024·3 min de lectura

Opciones de lectura
LucusHost, el mejor hosting

Está claro que cuanto más fácil le pongas a tu cliente poder pagar más conversiones tendrás en la página de finalizar compra. Pero hay ciertos métodos de pago que no son posibles en ciertos países o no te saldrían rentables, por ello lo más idóneo sería ocultarlos si vienen de dicho país.

No vamos a necesitar ningún plugin, eso sí habrá que modificar dos secciones de código para poner el país/ciudad y el método de pago.

Snippet para ocultar pagos por país

Añade este Snippet en tu plugin de funcionalidades para snippets o bien en el archivo functios.php de tu child theme.

add_filter('woocommerce_available_payment_gateways','dl_ocultar_pago_checkout',10,1);
 
function dl_ocultar_pago_checkout($array_payments) {
 
	if( WC()->customer->get_billing_country() == 'ES' ) //Aquí ponemos el código del país, puedes consultarlo en woocommerce.com
		unset($array_payments['paypal']); // El codigo del pago
	
	return $array_payments;
}

En el código que muestro aquí sirve para quitar paypal en España, se puede modificar cómo queráis. Para saber que código ISO hay que poner en el país o ciudad os dejo este enlace.

También os estaréis preguntando cual es el código(ID) de los métodos de pago, aquí os dejo los que más se usan:

Si tienes otra diferente a esta habla con tu proveedor y pídele que te proporcione la ID.

Snippet para quitar pagos en ciudades

¿Y si queremos ocultarlo en una ciudad concreta?

add_filter('woocommerce_available_payment_gateways','dl_ocultar_pago_checkout',10,1);
dl_ocultar_pago_checkout($array_payments) {
	if( WC()->customer->get_billing_country() == 'ES' && WC()->customer->get_billing_state() == 'MU' ) //Cambia el ES por el país y el MU por la comunidad
		unset($array_payments['bacs']);
	return $array_payments;
}
?>

En este caso estoy excluyendo la transferencia bancaria a Murcia en España. Para saber los códigos ISO de las ciudades con poner en Google ISO de las ciudades del país es suficiente.

Activar solo en una región de un país

En este caso es al revés que el anterior, solo activarlo en Murcia España:

add_filter('woocommerce_available_payment_gateways', 'dl_personalizar_metodos_pago_checkout', 10, 1);

function dl_personalizar_metodos_pago_checkout($available_gateways) {
    // Comprueba si el país de facturación NO es España o la provincia NO es Murcia
    if (WC()->customer->get_billing_country() != 'ES' || WC()->customer->get_billing_state() != 'MU') {
        // Si no es Murcia, elimina 'bacs' de los métodos de pago disponibles
        unset($available_gateways['bacs']);
    }
    // Para clientes en Murcia, todos los métodos de pago, incluido 'bacs', permanecen disponibles
    return $available_gateways;
}

Eso es todo por este tutorial, cualquier duda como siempre en comentarios. Podéis consultar mis servicios de Mantenimiento de Woocommerce para ayudaros en es

¡Haz clic para puntuar esta entrada!
(Votos: 3 Promedio: 5)
Diegol
Escrito porDiegolEspecialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.topSobre míLinkedInYouTube

12 respuestas

  1. Hola, muchas gracias. Si tengo 3 metodos de pago y quiero quitar 2 para un mismo pais lo puedo hacer tambien con ese snippet ? gracias.

  2. Hola amigo. Excelete post. Pregunta, funciona igual para paypal express? Hice una prueba insertando el codigo en el funtions.php de theme divi pero no funciono. Quedo atento. Gracias

    1. Hola Olber,

      No depende del Theme, sino del (ID) que menciono en el post, ya que el de PayPal y PayPal Express no es el mismo. Sino das con el te lo puedo buscar.

      Un saludo!

    1. Hola Alberto,

      Deberías cambiar el código ISO, en el artículo tienes un enlace con la lista. En tu caso deberías modificar esta línea del código(he cambiado ES por US):

      if( WC()->customer->get_billing_country() == 'US' )

      Espero que te sirva.

      1. Para oculatarlo en más paises sería repetir esa linea por pais?
        Por ejemplo
        if( WC()->customer->get_billing_country() == ‘US’ )
        if( WC()->customer->get_billing_country() == ‘ES’ )
        if( WC()->customer->get_billing_country() == ‘NL’ )

        O se puede hacer de algún otro modo que añada varios códigos de pais juntos?

        Gracias por tu ayuda

  3. Consulta, yo necesito lo contrario, que oculte un método en todos los paises EXCEPTO uno en concreto.
    Intente hacer lo siguiente pero no me lo toma

    if( WC()->customer->get_billing_country() != ‘ES’ )

    ¿Alguna idea? Gracias y excelente snipper

  4. ¿Alguien sabe cuál sería el código para no mostrar mercadopago de argentina?

    unset($array_payments[‘???????’]); // El codigo del mercado pago argentina

  5. El código de MP argentina es : “woo-mercado-pago-basic” . Si queres filtrar solo para Argentina o un país en particular y para el resto usar todos o un metodo en particular hay que usar un Else. Para Argentina filtra paypal y para el resto Mercado Pago.
    if( WC()->customer->get_billing_country() == ‘AR’)
    unset($array_payments[‘paypal’]);
    else
    unset($array_payments[‘woo-mercado-pago-basic’]);

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *