Saltar al contenido Saltar a la barra lateral

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Zona horaria del soporte: America/Argentina/Buenos_Aires (GMT-03:00)

Este tema contiene 1 respuestas, tiene 0 voices.

Última actualización por Otto hace 3 días, 19 horas.

Asistido por: Otto.

Autor Publicaciones
octubre 17, 2025 a las 1:58 pm #17494401

cristianS-20

Antecedentes del problema:
Estoy intentando configurar WooCommerce para que, en la moneda en dólares, solo PayPal esté activo y Mercado Pago no lo esté. Aquí están los enlaces a las capturas de pantalla que muestran mi configuración actual: enlace oculto y enlace oculto.

Síntomas:
No me da la opción de desactivar Mercado Pago para la moneda en dólares.

Preguntas:
¿Cómo puedo configurar WooCommerce para que solo PayPal esté activo en la moneda en dólares?
¿Por qué no tengo la opción de desactivar Mercado Pago para la moneda en dólares?

octubre 17, 2025 a las 2:56 pm #17494549

Otto
Partidario de WPML desde 09/2015

Idiomas: Inglés (English ) Español (Español )

Zona horaria: America/Argentina/Buenos_Aires (GMT-03:00)

Hola,

Restringir pasarelas por moneda solo está disponible para WooCommerce PayPal Payments, Stripe y Transferencia bancaria directa (BACS); terceros (p. ej., Mercado Pago) no exponen controles por moneda en WCML:

https://wpml.org/forums/topic/assign-payment-method-to-a-specific-currency/

https://wpml.org/forums/topic/multicurrency-not-functioning-with-third-party-payment-gateway/

https://wpml.org/forums/topic/supported-gateways-for-multicurrency/

Para restringir MP necesitarás una solución personalizada. Ten en cuenta que actualmente no proporcionamos soporte para trabajos personalizados en este foro.
Sin embargo, intentaré orientarte en la dirección correcta.

Podrías intentar algo así:

❌ Por favor, antes que nada: haz un backup de tu sitio ❌

Añade este código en un plugin MU o el functions.php de tu tema hijo:

add_filter( 'woocommerce_available_payment_gateways', function( $gateways ){
    if ( is_admin() ) { return $gateways; }

    // Moneda actual del cliente (WCML)
    if ( function_exists('wcml_get_woocommerce_currency') ) {
        $currency = wcml_get_woocommerce_currency(); // fallback rápido
    } else {
        $currency = get_woocommerce_currency();
    }

    // Solo PayPal cuando la moneda es USD
    if ( strtoupper($currency) === 'USD' ) {
        foreach ( $gateways as $id => $gateway ) {
            if ( $id !== 'paypal' && $id !== 'woocommerce_paypal_payments' ) {
                unset( $gateways[ $id ] );
            }
        }
    }

    // Opcional: asegurar que Mercado Pago NO aparezca en USD
    if ( strtoupper($currency) !== 'ARS' ) {
        foreach ( $gateways as $id => $gateway ) {
            // IDs comunes de MP: 'woo-mercado-pago-basic', 'woo-mercado-pago-custom'
            if ( in_array( $id, ['woo-mercado-pago-basic','woo-mercado-pago-custom','mercadopago'], true ) ) {
                unset( $gateways[ $id ] );
            }
        }
    }

    return $gateways;
}, 20 );

Saludos cordiales,
Otto