Saltar navegación

Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.

Problema:
El cliente desea que su sitio web muestre dos versiones de precios en dólares: una para EEUU y otros países americanos, y otra para países latinos como Colombia y Brasil, usando el complemento WPML. Sin embargo, por la interfaz solo es posible seleccionar tipos de dólar global, canadiense, australiano, etc., y el cliente pregunta si es posible implementar dos precios diferentes para la misma moneda DÓLAR programáticamente.
Solución:
No es posible agregar más monedas a WCML directamente. Sin embargo, se puede cambiar el símbolo de la moneda dinámicamente usando código personalizado. Aquí está un ejemplo de cómo hacerlo:

/**
 * Change a currency symbol for specific countries using WPML hooks
 */
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);

function change_existing_currency_symbol( $currency_symbol, $currency ) {
    // Get the current country using WPML
    $current_country = apply_filters('wpml_current_language', NULL);
    
    if ($currency === 'USD') {
        // Customize currency symbol based on country
        if ($current_country === 'br') { // Brazil
            $currency_symbol = 'USD R$';
        } elseif ($current_country === 'co') { // Colombia
            $currency_symbol = 'USD COL$';
        } else {
            $currency_symbol = 'USD'; // Default for other countries
        }
    }
    return $currency_symbol;
}

Además, se sugiere utilizar el complemento WooCommerce Product Price Based on Countries para gestionar precios diferenciados por país.
Si esta solución no resuelve tu problema o si la información proporcionada se ha vuelto obsoleta, te recomendamos abrir un nuevo ticket de soporte. También te sugerimos revisar los problemas conocidos y asegurarte de que tienes instaladas las últimas versiones de los temas y complementos. Para más asistencia, visita nuestro foro de soporte.

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.

Este tema contiene 5 respuestas, tiene 0 voces.

Última actualización por michelleG-8 hace 3 semanas, 1 día.

Asistido por: Andreas W..

Autor Entradas
octubre 31, 2024 en 5:21 pm #16353010

michelleG-8

Antecedentes del problema:
Quiero que nuestro sitio esté en 3 monedas: SOLES, EUROS y DÓLARES. El complemento WPML permite esto, pero tenemos un caso especial para la moneda DÓLARES. Queremos tener dos versiones de precios en dólares: uno para EEUU y otros países americanos, y otro para países latinos como Colombia y Brasil. En Perú seguirá siendo SOLES. Por la interfaz, solo puedo seleccionar dólar global, canadiense, australiano, etc., pero queremos saber si es posible usar la moneda DÓLAR con dos precios diferentes por países. Entiendo que tal vez por la interfaz no se puede, pero tal vez programáticamente con código personalizado se pueda conseguir.

Síntomas:
No puedo seleccionar dos precios diferentes para la moneda DÓLAR por países usando la interfaz de WPML.

Preguntas:
¿Es posible usar la misma moneda DÓLAR con dos precios diferentes para diferentes países en WPML?
¿Pueden darnos algunas recomendaciones para implementar esto programáticamente con código personalizado?

octubre 31, 2024 en 7:00 pm #16353236

Andreas W.
Supporter

Idiomas: Inglés (English ) Español (Español ) Alemán (Deutsch )

Zona horaria: America/Lima (GMT-05:00)

Hola,

Lamentablemente no es posible agregar más monedas a WCML.

Lo que podrías hacer aquí es cambiar el símbolo de moneda dinámicamente:
https://woocommerce.com/document/change-a-currency-symbol/

Podrías usar una condición de lenguaje de WPML como el ejemplo en este enlace:

/**
 * Change a currency symbol for specific countries using WPML hooks
 */
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);

function change_existing_currency_symbol( $currency_symbol, $currency ) {
    // Get the current country using WPML
    $current_country = apply_filters('wpml_current_language', NULL);
    
    if ($currency === 'USD') {
        // Customize currency symbol based on country
        if ($current_country === 'br') { // Brazil
            $currency_symbol = 'USD R$';
        } elseif ($current_country === 'co') { // Colombia
            $currency_symbol = 'USD COL$';
        } else {
            $currency_symbol = 'USD'; // Default for other countries
        }
    }
    return $currency_symbol;
}

Saludos
Andreas

noviembre 5, 2024 en 3:36 pm #16367927

michelleG-8

Hola, gracias por tu respuesta.
Pero tengo una duda, si sólo cambio el símbolo de moneda cuando se agregue el producto al carrito y se realice el pago no habrá conflicto con la moneda y/o tipo de cambio con la pasarela de pago?
Porque entiendo que al cambiar el símbolo de moneda el cambio es "visual" para el usuario, pero internamente sigue siendo por ejemplo dolar canadiense y no el dolar americano, eso no afectaría a mi pasarela de pago?

noviembre 5, 2024 en 6:20 pm #16368751

Andreas W.
Supporter

Idiomas: Inglés (English ) Español (Español ) Alemán (Deutsch )

Zona horaria: America/Lima (GMT-05:00)

Este código solo cambiará el símbolo de moneda de los idiomas activos.

En este ejemplo, todos los idiomas utilizan el dólar estadounidense, pero puedes filtrar el símbolo de la moneda y mostrarlo de forma diferente, por ejemplo, en Colombia.

Esto solo tiene un impacto visual. Los precios seguirán siendo idénticos.

noviembre 7, 2024 en 6:04 pm #16379588

michelleG-8

Gracias por tu respuesta, pero creo que no me dejé explicar bien. Les pongo un ejemplo de lo que queremos para saber si es viable con el complemento y/o programación personalizada.

Tenemos 3 monedas: PEN, EUR y USD (dolar americano)

Pero queremos que el precio USD del producto cambié según el país, por ejemplo:

1. Bolso LUA -> en países de Europa se muestra el precio en EUR.
2. Bolso LUA -> sólo en Perú se muestra el precio en soles PEN.
3. Bolso LUA -> en paises americanos como EEUU, Canada debe costar USD 450
4. Bolso LUA -> en países latinos (menos Perú) como Brasil, Argentina debe costar USD 320

O sea la misma moneda USD (dolares americanos) pero en EEUU con un precio y en Brasil con otro precio.

¿Se puede configurar de esa forma?

De antemano gracias por todo su tiempo y espero haya alguna solución.

noviembre 7, 2024 en 6:56 pm #16379688

Andreas W.
Supporter

Idiomas: Inglés (English ) Español (Español ) Alemán (Deutsch )

Zona horaria: America/Lima (GMT-05:00)

Con WPML sea la misma moneda USD en todo los idiomas. Lo único que puedes cambiar programáticamente es el símbolo de la moneda.

Además, con WPML cada traducción del producto siempre utilizará el mismo precio que el producto original.

Podrías probar a usar este complemento:
https://wordpress.org/plugins/woocommerce-product-price-based-on-countries/

noviembre 12, 2024 en 3:22 pm #16393480

michelleG-8

Gracias por las respuestas, con toda esa información ya tengo una idea para realizar algunas pruebas, también voy a proboar el complemento que recomiendan sobre precios por país.