WPCS - WordPress Currency Switcher Professional

Comment afficher le code de la devise actuelle dans WordPress ?

Découvrez comment afficher le code de la devise actuelle dans WordPress avec un shortcode personnalisé qui ne renvoie que le code (par exemple « USD », « EUR », « GBP »), sans aucun texte supplémentaire.

Le problème

WPCS dispose d'un shortcode intégré [wpcs_current_currency] qui affiche la devise actuelle, mais son résultat est le suivant :

Current currency is: USD

Ce dont on a souvent besoin : uniquement le code de la devise : USD

C'est utile dans les cas suivants :

  • Envoyer les données de devise à des applications externes
  • Afficher la devise dans votre propre texte personnalisé
  • Intégrer la devise à des formulaires ou à d'autres plugins
  • Créer des affichages de prix sur mesure

Solution : créer un shortcode personnalisé

Ajoutez ce code au fichier functions.php de votre thème enfant, ou utilisez le plugin Code Snippets :

Version de base (code de la devise uniquement)

/**
 * Custom shortcode to display current currency code
 * Usage: [current_currency]
 * Output: USD (or EUR, GBP, etc.)
 */
add_shortcode('current_currency', function() {
    if (class_exists('WPCS')) {
        global $WPCS;
        return $WPCS->current_currency;
    }
    return '';
});

Utilisation :
[current_currency]

Résultat :
USD

Version étendue (avec plusieurs options)

Cette version vous offre plus de souplesse grâce à différents formats de sortie :

/**
 * Extended currency shortcode with options
 * Usage: [get_currency info="code"]
 * Options:
 * - code: USD
 * - symbol: $
 * - name: US Dollar
 */
add_shortcode('get_currency', function($atts) {
    if (!class_exists('WPCS')) {
        return '';
    }
    
    global $WPCS;
    
    // Default attributes
    $atts = shortcode_atts(array(
        'info' => 'code', // code, symbol, or name
    ), $atts);
    
    $currency = $WPCS->current_currency;
    
    // Get currency data
    $currencies = $WPCS->get_currencies();
    
    switch ($atts['info']) {
        case 'symbol':
            // Return currency symbol ($, €, £)
            return isset($currencies[$currency]['symbol']) ? $currencies[$currency]['symbol'] : '';
            
        case 'name':
            // Return currency name (US Dollar, Euro, etc.)
            return isset($currencies[$currency]['name']) ? $currencies[$currency]['name'] : '';
            
        case 'code':
        default:
            // Return currency code (USD, EUR, GBP)
            return $currency;
    }
});

Exemples d'utilisation :
Currency code: [get_currency info="code"]
Currency symbol: [get_currency info="symbol"]
Currency name: [get_currency info="name"]

Résultat :
Currency code: USD
Currency symbol: $
Currency name: US Dollar

Où ajouter le code

Option 1 : functions.php du thème enfant (recommandé)

  1. Allez dans Apparence → Éditeur de fichiers du thème (Appearance → Theme Editor)
  2. Sélectionnez le thème enfant (important !)
  3. Ouvrez functions.php
  4. Collez le code à la fin du fichier
  5. Cliquez sur Mettre à jour le fichier (Update File)

Pourquoi un thème enfant :

  • Les mises à jour du thème parent n'effaceront pas votre code
  • Plus sûr et plus facile à maintenir

Option 2 : plugin Code Snippets (plus simple)

  1. Installez le plugin Code Snippets : https://wordpress.org/plugins/code-snippets/
  2. Allez dans Extraits → Ajouter (Snippets → Add New)
  3. Collez le code
  4. Choisissez « Exécuter partout » (Run everywhere)
  5. Activez l'extrait

Avantages :

  • Aucune modification des fichiers du thème
  • Activation et désactivation faciles
  • Le code survit aux changements de thème

Cas d'usage concrets

Cas 1 : texte de prix personnalisé

Au lieu de :

Current currency is: USD
Price: $99

Vous pouvez écrire :
Price in [current_currency]: $99

Résultat :
Price in USD: $99

Cas 2 : intégration avec des formulaires

Envoyez le code de la devise à une application externe via un champ masqué :

<form>
    <input type="hidden" name="currency" value="[current_currency]">
    <input type="text" name="amount">
    <button type="submit">Submit</button>
</form>

Cas 3 : contenu conditionnel

À combiner avec des plugins de shortcodes conditionnels :

[if currency="USD"]
Special offer for US customers!
[/if]

Cas 4 : texte dynamique

Your cart total in US Dollar: $99.00

Résultat :
Your cart total in US Dollar: $99.00

Cas 5 : comparaison multi-devises

Price: $99 [current_currency]
(Approximately €90 EUR or £80 GBP)

Avancé : obtenir la devise détectée par GeoIP

Si vous souhaitez afficher la devise détectée automatiquement par GeoIP (qui n'est pas forcément la devise active) :

/**
 * Get GeoIP detected currency
 * Usage: [geoip_currency]
 */
add_shortcode('geoip_currency', function() {
    if (!class_exists('WPCS')) {
        return '';
    }
    
    global $WPCS;
    
    // Get currency detected by GeoIP
    $geo_currency = $WPCS->get_currency_by_country(
        $WPCS->get_user_country_code()
    );
    
    return $geo_currency ? $geo_currency : $WPCS->default_currency;
});

Cas d'usage : indiquer à l'utilisateur quelle devise a été détectée d'après sa position :
We detected you're browsing from [geoip_currency] region.
Currently viewing prices in [current_currency].

Avancé : obtenir toutes les informations sur la devise

Récupérez toutes les données de la devise actuelle :

/**
 * Get comprehensive currency data
 * Usage: [currency_info]
 */
add_shortcode('currency_info', function() {
    if (!class_exists('WPCS')) {
        return '';
    }
    
    global $WPCS;
    
    $currency = $WPCS->current_currency;
    $currencies = $WPCS->get_currencies();
    $data = $currencies[$currency];
    
    $output = sprintf(
        'Code: %s | Symbol: %s | Name: %s | Rate: %s',
        $currency,
        $data['symbol'],
        $data['name'],
        $data['rate']
    );
    
    return $output;
});

Résultat :
Code: EUR | Symbol: € | Name: Euro | Rate: 0.92

Mettre en forme le résultat

Vous pouvez envelopper le résultat dans du HTML pour le mettre en forme :

add_shortcode('styled_currency', function() {
    if (!class_exists('WPCS')) {
        return '';
    }
    
    global $WPCS;
    $currency = $WPCS->current_currency;
    
    return '<span class="currency-badge">' . esc_html($currency) . '</span>';
});

Ajoutez ensuite le CSS :
.currency-badge {
    background: #007bff;
    color: white;
    padding: 2px 8px;
    border-radius: 3px;
    font-size: 12px;
    font-weight: bold;
}

Résultat :
<span style="background:#007bff;color:white;padding:2px 8px;border-radius:3px;font-size:12px;font-weight:bold;">USD</span>

Dépannage

Le shortcode n'affiche rien

Problème : [current_currency] n'affiche rien

Causes possibles :

  1. WPCS n'est pas actif
    • Vérifiez que le plugin WPCS est installé et activé
    • Consultez la page des extensions
  2. Code mal ajouté
    • Vérifiez que le code se trouve dans functions.php ou dans Code Snippets
    • Recherchez d'éventuelles erreurs de syntaxe PHP
    • Consultez le journal d'erreurs (si WP_DEBUG est activé)
  3. Conflit de nom de shortcode
    • Un autre plugin utilise peut-être le même nom de shortcode
    • Essayez un autre nom : [my_currency] par exemple

Solution : ajoutez une vérification d'erreurs à votre shortcode :

add_shortcode('current_currency', function() {
    if (!class_exists('WPCS')) {
        return '<!-- WPCS plugin not found -->';
    }
    
    global $WPCS;
    
    if (!isset($WPCS->current_currency)) {
        return '<!-- Currency not set -->';
    }
    
    return $WPCS->current_currency;
});

Affichez le code source de la page pour voir le message d'erreur.

Mauvaise devise affichée

Problème : le shortcode affiche une mauvaise devise

Causes possibles :

  1. Problème de cache
    • Videz tous les caches (WordPress, navigateur, serveur)
    • Testez en navigation privée
  2. Devise pas encore changée
    • L'utilisateur n'a pas changé la devise manuellement
    • La détection GeoIP ne fonctionne pas
    • Vérifiez les réglages de WPCS

Solution :

  • Videz les caches
  • Testez manuellement le changement de devise
  • Vérifiez que GeoIP est configuré dans WPCS

Le shortcode fonctionne dans les articles mais pas dans les widgets

Problème : le shortcode s'affiche dans les articles mais pas dans les widgets de la barre latérale

Cause : WordPress n'interprète pas les shortcodes dans les widgets par défaut

Solution : ajoutez ce code pour activer les shortcodes dans les widgets :

add_filter('widget_text', 'do_shortcode');

Les caractères spéciaux s'affichent mal

Problème : les symboles de devise comme € ou £ s'affichent sous la forme �

Solution : utilisez esc_html() pour les encoder correctement :

add_shortcode('current_currency', function() {
    if (class_exists('WPCS')) {
        global $WPCS;
        return esc_html($WPCS->current_currency);
    }
    return '';
});

Utilisation dans les templates PHP

Si vous devez l'utiliser dans des fichiers de template PHP plutôt qu'avec des shortcodes :

<?php
if (class_exists('WPCS')) {
    global $WPCS;
    echo esc_html($WPCS->current_currency);
}
?>

Ou avec le shortcode :
<?php echo do_shortcode('[current_currency]'); ?>

Bonnes pratiques

  1. Vérifiez toujours que WPCS existe

    if (class_exists('WPCS')) {
           // Your code
       }

     

    Cela évite les erreurs si WPCS est désactivé

  2. Utilisez des noms de shortcode uniques
    • Évitez les noms génériques comme [currency]
    • Utilisez des noms préfixés : [my_site_currency]
  3. Échappez le résultat
    return esc_html($WPCS->current_currency);

    Cela évite les failles XSS
  4. Testez après les mises à jour de WPCS
    • Les mises à jour du plugin peuvent modifier l'API
    • Testez vos shortcodes personnalisés après chaque mise à jour
  5. Documentez vos shortcodes
    • Notez ce que fait chaque shortcode
    • Ajoutez des commentaires dans le code

Alternative : utiliser la fonction intégrée de WPCS

Au lieu de créer un shortcode, vous pouvez utiliser directement la fonction WPCS en PHP :

$currency = wpcs_current_currency();
echo $currency; // Outputs: USD

Fonctions disponibles :

  • wpcs_current_currency() - Obtenir le code de la devise actuelle
  • wpcs_convert_price($amount, $from, $to) - Convertir entre devises
  • wpcs_get_user_currency() - Obtenir la devise sélectionnée par l'utilisateur

Résumé

Solution rapide (prête à copier-coller) :

/**
 * Display current currency code
 * Usage: [current_currency]
 * Output: USD (or EUR, GBP, etc.)
 */
add_shortcode('current_currency', function() {
    if (class_exists('WPCS')) {
        global $WPCS;
        return esc_html($WPCS->current_currency);
    }
    return '';
});

À ajouter dans :

  • Le fichier functions.php du thème enfant, OU
  • Le plugin Code Snippets

À utiliser partout :

[current_currency]

Résultat :
USD

Et voilà ! Simple, propre, et compatible partout où les shortcodes sont pris en charge.