WPCS - WordPress Currency Switcher Professional

Prix fixe par devise sur WordPress avec [wpcs_price type=fixed]

Un prix fixe par devise sur WordPress signifie que vous choisissez vous-même le montant pour chaque devise : 15 en dollars américains, 20 en euros, 45 en livres, sans aucun taux de change. WPCS le fait avec l'attribut type=fixed du shortcode [wpcs_price]. La syntaxe est stricte, et lorsqu'un seul caractère est erroné, le prix affiche le mot none ou 0.00 au lieu d'un montant. Vous trouverez ci-dessous la syntaxe exacte, la signification de chaque symptôme et la manière de contrôler les centimes sur les prix fixes.

Prix convertis et prix fixes

Un [wpcs_price value=100] normal lit 100 comme un montant dans votre devise de base et le multiplie par le taux de change de la devise que le visiteur a sélectionnée. Le montant suit les taux : il change donc chaque fois qu'ils sont mis à jour.

Avec type=fixed, rien n'est converti. Le plugin découpe value à chaque virgule en paires CODE:montant, retient la paire dont le code correspond à la devise du visiteur et affiche ce montant avec le symbole, les décimales et le format des nombres de cette devise :

[wpcs_price value=100]
[wpcs_price type=fixed value=USD:15,EUR:20,GBP:45]

Un visiteur qui a sélectionné EUR voit 20 euros avec le second shortcode, quel que soit le taux du jour. Utilisez les prix fixes pour les montants qui ne doivent pas bouger avec les taux : prix du marché arrondis (19 au lieu de 18.37), grilles tarifaires convenues par pays, abonnements et forfaits de services.

Prix fixe par devise : les règles de syntaxe

Les paires sont séparées par un simple découpage de chaîne : chaque caractère compte.

ÉcrivezPasCe que fait la forme erronée
USD:15,EUR:20USD:15, EUR:20L'espace fait partie du code (" EUR"), donc EUR affiche none
EUR:20eur:20 ou Euro:20Les codes doivent être ceux de l'onglet Devises (Currencies), en majuscules : sinon none
EUR:1250.50EUR:1250,50La virgule démarre une nouvelle paire : 1250.00 s'affiche et les centimes sont perdus
EUR:1250EUR:1,250 ou EUR:1.250Les séparateurs de milliers cassent le nombre : 1.00 ou 1.25 s'affiche
EUR:20EUR:€20Un symbole devant le nombre est lu comme 0 : 0.00
value=USD:15,EUR:20value=”USD:15,EUR:20”Le guillemet courbe reste collé au premier code : la première devise affiche none

Une valeur fixe ne contient aucun espace, elle n'a donc besoin d'aucun guillemet. Écrire [wpcs_price type=fixed value=USD:15,EUR:20,GBP:45] sans aucun guillemet supprime complètement l'erreur la plus fréquente.

Pourquoi le prix fixe affiche « none » ou 0

Chaque symptôme renvoie à une cause précise :

Ce que vous voyezCauseSolution
Toutes les devises affichent 0 ou 0.00type n'est pas lu comme fixed. Avec type=”fixed”, WordPress ne reconnaît pas les guillemets courbes comme des guillemets et les garde dans la valeur : le shortcode traite alors le prix comme un prix normal et tente de convertir un texte qui n'est pas un nombre.Écrivez type=fixed
La première devise de la liste affiche none, les autres fonctionnentUn guillemet fait partie de value : le premier code se lit ”INR au lieu de INR. Les guillemets courbes provoquent cela, de même que certains éléments de constructeurs de pages et plugins de tableaux qui transmettent les guillemets comme de simples caractères.Retirez les guillemets autour de value
Une devise affiche noneLa devise manque dans la liste (typiquement une devise ajoutée après l'écriture du shortcode), ou son code diffère de celui de l'onglet Devises (Currencies)Ajoutez la paire ou corrigez le code
Toutes les devises affichent nonevalue s'est retrouvé vide. Le plus souvent, les paires ont été placées dans meta_value, qui attend le nom d'un champ personnalisé, pas des prixUtilisez value= pour les paires écrites dans le shortcode
Le prix et le sélecteur affichent des devises différentesUn cache de pages ou le cache du navigateur a servi une page construite pour une autre deviseVoir ci-dessous

Les guillemets courbes (” “) arrivent avec le copier-coller : depuis une page web, un document, un e-mail ou une messagerie, ou depuis une application qui remplace les guillemets droits à mesure que vous tapez. Si vous ne savez pas ce que contient l'éditeur, supprimez les guillemets et retapez le shortcode à la main.

Pour la dernière ligne : après avoir modifié des devises ou des réglages, videz le cache de votre plugin de cache et celui du navigateur (Ctrl+F5), puis testez à nouveau. Si les visiteurs continuent de recevoir des prix dans la mauvaise devise sur un site en cache, configurez le plugin pour le cache comme décrit dans le sélecteur de devises et les plugins de cache.

Chaque devise a besoin de son propre montant

Un shortcode fixe ne peut pas mélanger devises fixes et devises converties. Une devise sans paire n'est pas calculée à partir des autres montants ; elle affiche none. Ainsi, quand vous ajoutez une devise dans l'onglet Devises (Currencies), chaque prix fixe du site a besoin d'une nouvelle paire. Pour les retrouver, saisissez type=fixed dans le champ de recherche des listes Articles (Posts) et Pages de l'administration (la recherche porte sur le contenu), puis vérifiez séparément les widgets et les modèles des constructeurs de pages.

Si ce dont vous avez réellement besoin est un prix écrit dans une devise autre que la devise de base et converti pour tous les autres, c'est une autre technique : voir comment fonctionne la devise de base, qui comprend un petit shortcode pour les prix saisis dans n'importe quelle devise.

Prix fixes stockés dans un champ personnalisé

Les paires peuvent se trouver dans un champ personnalisé plutôt que dans le shortcode. Placez le même texte dans le champ, par exemple USD:15,EUR:20,GBP:45, et indiquez le champ dans meta_value :

[wpcs_price meta_value=plan_prices type=fixed]

meta_value prend la clé méta du champ de l'article courant (ajoutez post_id=123 pour un autre article), et les mêmes règles de syntaxe s'appliquent au texte du champ. La manière de trouver la bonne clé, en particulier pour les champs ACF, est expliquée dans convertir un champ de prix ACF.

Centimes, décimales et arrondis sur les prix fixes

Un montant fixe est affiché avec les réglages de la ligne de sa devise dans l'onglet Devises (Currencies) : Afficher les centimes (Show cents) ou Masquer les centimes (Hide cents), Décimales (Decimals) et Format. Avec deux décimales, USD:50 s'affiche 50.00. Ces réglages s'appliquent à tous les prix dans cette devise, convertis ou fixes.

Les prix fixes ne passent pas par le filtre wpcs_price : le code d'arrondi qui s'y accroche ne modifie donc que les prix convertis. C'est voulu : un montant fixe est affiché tel que vous l'avez écrit.

Pour afficher certains prix fixes sans centimes et d'autres avec (une formule à 50 et des options à 1.15 sur la même page), donnez aux shortcodes qui doivent perdre leurs centimes un attribut supplémentaire, par exemple name=no-cents. WPCS ignore les attributs inconnus, mais il les transmet tous au filtre wpcs_shortcode_price_html_manipulation, avec le HTML du prix et la devise courante :

[wpcs_price type=fixed value=USD:50,EUR:45,GBP:40 name=no-cents]
[wpcs_price type=fixed value=USD:1.15,EUR:1.05,GBP:0.95]
/*
 * WPCS: remove the decimal part from [wpcs_price ... name=no-cents].
 * Child theme functions.php or a code snippets plugin.
 */
add_filter('wpcs_shortcode_price_html_manipulation', function ($price_html, $atts, $currency) {
    global $WPCS;
    if (is_array($atts) && isset($atts['name']) && $atts['name'] === 'no-cents') {
        // decimal separator of this currency, from its Format setting
        $sep = preg_quote($WPCS->get_decimal_separator($currency), '/');
        // drop the separator and the digits after it, outside HTML attributes
        $price_html = preg_replace('/(\d)' . $sep . '\d+(?![^<]*>)/', '$1', $price_html);
    }
    return $price_html;
}, 10, 3);

Le filtre fonctionne aussi sur les prix convertis. Une limite : lorsque J'utilise un plugin de cache sur mon site (I am using cache plugin on my site) est réglé sur Oui (Yes) dans l'onglet Options, le plugin redessine chaque prix en AJAX après le chargement de la page, et ce redessin n'exécute pas ce filtre. Sur un tel site, utilisez plutôt Masquer les centimes (Hide cents) ou Décimales (Decimals) sur la devise.

Liste de contrôle

  • Le shortcode est [wpcs_price type=fixed value=...], sans guillemets, ou avec des guillemets droits uniquement.
  • Chaque devise de l'onglet Devises (Currencies) a une paire, avec son code en majuscules.
  • Pas d'espaces, pas de symboles, pas de séparateurs de milliers, un point pour les décimales.
  • Les paires écrites dans le shortcode vont dans value ; meta_value ne contient qu'un nom de champ.
  • Caches vidés après les modifications, et page testée dans une fenêtre privée.

Si un prix fixe affiche encore none après ces vérifications, ouvrez un sujet sur le forum de support WPCS avec le shortcode exact, les codes de devises de votre onglet Devises (Currencies) et un lien vers la page.