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

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)
mailerlite diegol

Especialista 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.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

mailerlite diegol

Reader Interactions

comentarios

  1. Guillermo Amaya says

    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. Olber says

    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

    • Diegol says

      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!

    • Diegol says

      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.

      • Alberto says

        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. Juan says

    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. Miguel says

    ¿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. Tito whisky says

    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 *