FOX - Currency Switcher for WooCommerce

La géolocalisation WooCommerce ne fonctionne pas : clé MaxMind et cache

« La géolocalisation WooCommerce ne fonctionne pas » a presque toujours l’une des deux causes, et aucune n’est le plugin de devise : une clé MaxMind manquante, ou un cache de page qui sert à un visiteur la page construite pour un autre.

Attention : à partir de WooCommerce v.3.9, une clé MaxMind est requise dans les paramètres WooCommerce pour la fonctionnalité de géolocalisation : wp-admin/admin.php?page=wc-settings&tab=integration&section=maxmind_geolocation
Essayez de modifier les règles de géolocalisation et regardez-les dans différents navigateurs, car le même navigateur ne vous montrera que le premier résultat. Mieux encore, envoyez le lien à des amis, car si le stockage des données est sélectionné comme transitoire (memcached ou redis aussi), vous verrez le même résultat dans tous les navigateurs sur votre ordinateur (la même IP) — un autre ordinateur est nécessaire — partagez le lien avec des amis. Exemple : Vous êtes en Espagne, et vous souhaitez vérifier la géolocalisation, alors ajoutez JPY par exemple, enregistrez, allez dans les règles de géo et pour JPY, définissez Espagne L'utilisation de la géolocalisation pose des problèmes, semble ne pas fonctionner pour moi Ouvrez le navigateur Opera par exemple, je veux dire un autre navigateur que vous n’avez pas utilisé pour tester votre site auparavant, et vous verrez que JPY est défini ! Ne faites pas le même test dans le même navigateur, aujourd’hui exactement.... La géolocalisation est fournie par l’API native de WooCommerce, elle devrait donc fonctionner parfaitement... Quoi qu’il en soit, WOOCS utilise les fonctionnalités de WooCommerce. Il arrive parfois que dans les endroits proches de la frontière, la géolocalisation IP montre un autre pays, par exemple en Espagne, dans la ville de Logroño, elle indique qu’elle est en France. Précision : https://www.maxmind.com/en/geoip2-city-accuracy-comparison Depuis la version 2.1.8/1.1.8, il est possible d’utiliser ce shortcode pour tester : [woocs_geo_hello] — placez-le dans un widget de texte habituel ou dans n’importe quelle page pour voir les informations sur l’état de la fonctionnalité GeoIp sur votre site. Demande de support client : https://pluginus.net/support/topic/currency-switcher-behaving-abnormally/
Vous pouvez également essayer ce qui suit — insérez le code ci-dessous dans votre fichier functions.php du thème WP actuel :
add_filter("woocs_geobone_ip",function(){
    return true;
});
Si vous utilisez des plugins de cache, activez : Paramètres WooCommerce -> Général -> Emplacement par défaut du client L'utilisation de la géolocalisation pose des problèmes, semble ne pas fonctionner pour moi Si vous utilisez le plugin Rocket Cache, désactivez l’option 'Activer la mise en cache pour les utilisateurs WordPress connectés' : L'utilisation de la géolocalisation pose des problèmes, semble ne pas fonctionner pour moi Pour tester la fonctionnalité GeoIP, vous pouvez utiliser le service suivant : https://www.locabrowser.com
ATTENTION : Si vous êtes sûr que les recommandations ci-dessus sont correctement appliquées — vérifiez si la fonctionnalité geo de WooCommerce fonctionne sur votre site : insérez simplement le shortcode [woocs_geo_hello] dans un widget de texte habituel.

Autres exemples de problème :

Le problème vient d’être résolu aujourd’hui. Je voudrais partager avec vous comment il a été résolu après avoir contacté mon fournisseur et WC, au cas où un client ayant le même fournisseur rencontrerait le même problème. Mon fournisseur est Bluehost. Il semble que seulement récemment, ils ont commencé à peupler HTTP_X_FORWARDED_FOR avec l’IP statique de mon serveur. Peut-être que cela est arrivé après une mise à jour qu’ils ont faite, je ne sais pas. Ils n’ont pas été très utiles pour fournir des informations à ce sujet. WooCommerce a été celui qui a pu détecter le problème après un certain temps et a suggéré une solution/contournement. WooCommerce vérifie généralement les variables suivantes pour l’IP réelle (en commençant par le haut) : HTTP_X_REAL_IP HTTP_X_FORWARDED_FOR REMOTE_ADDR Donc WooCommerce recherche le pays pour cette adresse IP au lieu de l’adresse IP stockée dans REMOTE_ADDR. WooCommerce s’attend à ce que HTTP_X_FORWARDED_FOR soit dans le format suivant : Les serveurs proxy peuvent envoyer cet en-tête comme ceci : X-Forwarded-For : client1, proxy1, proxy2 Assurez-vous que nous n’envoyons toujours que la première IP de la liste, qui devrait toujours être l’IP du client. WooCommerce a suggéré un contournement qui impliquerait un extrait de code à ajouter à functions.php pour le remplacer :
if ( isset( $_SERVER['REMOTE_ADDR'] ) && ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
    $_SERVER['HTTP_X_FORWARDED_FOR'] = $_SERVER['REMOTE_ADDR'];
}
Après avoir ajouté l’extrait à functions.php, tout a bien fonctionné et j’ai enfin pu réactiver le commutateur de devise :) Note : également, on a découvert que HostGator avait un problème similaire https://wordpress.org/support/topic/same-ip-address-for-all-orders/page/2/#post-11362720 Cordialement, Ezz

Cloudflare

Salut, J’utilise ce plugin depuis des années et il fonctionnait très bien jusqu’à ce que nous changions de serveur. J’ai essayé la plupart des choses suggérées sur le forum mais je n’ai pas réussi. Quand j’utilise le plugin, il n’affiche que la devise Euro même s’il est configuré pour afficher la Livre Turque en Turquie. Nous utilisons Ubuntu 22.04 sur EC2 avec Cloudpanel et nos enregistrements DNS sur Cloudflare. Avez-vous une suggestion pour réactiver la détection de localisation ? Résolu : Bonjour Pablo et tous ceux qui lisent ceci, Merci pour votre soutien, malheureusement ce n’était pas la cause de mon problème. Je n’ai pas pu le comprendre ce jour-là mais maintenant je l’ai résolu. Notre nouveau serveur utilise Ngnix / Cloudpanel et le système de cache Varnish est actif. Lorsque Varnish est actif, il crée un équilibreur de charge comme un mur devant le serveur, donc lorsque l’utilisateur visite le site web, il visite en fait Varnish avant & l’IP envoyée à WooCommerce est l’IP de Varnish. Le problème a été résolu lorsque j’ai ajouté " real_ip_header CF-Connecting-IP;" à mon fichier Vhost & ensuite désactivé Varnish Cache. Je travaille encore sur la façon dont Varnish et le plugin de commutateur de devise peuvent fonctionner ensemble, si je trouve une solution, je la partagerai aussi. J’espère que cela aide d’autres personnes qui ont le même problème ou un problème similaire.   Source : https://pluginus.net/support/topic/problem-with-new-server/
Notes pour WP Rocket : FOX ne fonctionne pas lorsque WP Rocket est actif Lire aussi : https://pluginus.net/support/topic/issue-with-switch-currency-geoip/ Lire aussi : /how-to-switch-currency-based-on-billing-address-instead-of-geolocation/