[Esperando confirmación del usuario] Divisas Basadas en el Idioma
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)
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?
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:
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 );