Ce sujet est résolu. Voici une description du problème et de la solution.
Problem: The client is experiencing issues with the language switcher in the header and footer of their website not working, while it functions correctly in mobile or tablet formats. The system admin has implemented security measures that block access to anything related to wp-admin unless connected via the company's VPN. WPML uses admin-ajax.php for the language switcher, but not in all cases. Solution: We recommended checking the documentation on enabling a language cookie to support Ajax filtering: Activation d'un cookie de langue pour supporter le filtrage Ajax. The client should try toggling the Ajax filtering support and also uncheck the "Auto sign-in/sign-out feature" under WPML->Languages -> Language URL Format. Additionally, testing in a minimal environment by deactivating all plugins except WPML and switching to a default WordPress theme like Twenty Twenty-one could help identify any conflicting plugins. We also provided information on making exceptions for specific endpoints in the VPN/Firewall/Apache .htaccess settings to allow admin-ajax.php and admin-post.php, which are used internally by WordPress and several plugins, including WPML. Furthermore, we suggested using the
wpml_ls_enable_ajax_navigation
hook to disable Ajax navigation if the default language selector in the footer uses regular page refreshes instead of Ajax requests. This hook can be found here: wpml_ls_enable_ajax_navigation.
If these steps do not resolve the issue, or if the solution seems outdated or not applicable, we highly recommend opening a new support ticket. Please check related known issues at https://wpml.org/known-issues/, verify the version of the permanent fix, and confirm that you have installed the latest versions of themes and plugins. For further assistance, you can also visit our support forum: WPML Support Forum.
Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.
Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.
Contexte de la question:
Sur mon menu en header et footer, le lien pour changer de langue ne fonctionne pas, alors que en format mobile ou tablette, celui du menu fonctionne ainsi que la bannière ->"consulter le site en Français" quand on est sur la version EN (en navigateur en FR)
Je ne comprends pas pourquoi pourquoi dans certains cas est appelé l'admin-ajax.php et pas dans d'autres.
Pour info, nous avons restreint l'accès au tout ce qui touche l'admin par utilisation IP pour des soucis de sécurité.
Mais je comprends pas pourquoi il y a 2 façon de fonctionner différentes dans le changement de langue.
Symptômes:
Je ne peux pas changer de langues avec certaines intégrations du widget WPML alors qu'ils ont la meme intégration.
Questions:
pourquoi dans certains cas le admin-ajax est appelé et pas dans d'autres cas ?
Je me suis peut être mal exprimé sur la nature du problème.
Jusqu'à présent je n'avais pas de souci de switch langue.
Pour des soucis de sécurité l'admin sys a mis en place une sécurité en empêchant l'appel tout ce qui concerne le wp-admin si on a pas le VPN de la société.
Je me suis rendu compte à l'utilisation que WPML utilise le admin-ajax.php dans le switch langue mais pas dans tous les cas. Quand je suis sur VPN il fonctionne très bien car il a accès à l'admin-ajax.
Comme je vous l'ai dit dans le message précedent j'ai des version du switch langue qui fonctionnent sans l'appel a l'admin-ajax :
Quand j'utilise le changement de langue dans le menu en version petit écran, tablette et mobile notamment.
J'intégration du widget de WPML est exactement la même que sur le menu version écran.
Je voudrais si possible ne pas utiliser l'appel a l'admin-ajax.php pour faire fonctionner le switch-langue, tant qu'on est pas sur l'interface d'administration. Qu'il puisse tout le temps fonctionner comme sur le changement de langue dans le menu en version petit écran, tablette et mobile.
Les langues: Anglais (English )Français (Français )Arabe (العربية )
Fuseau horaire: Pacific/Easter (GMT-06:00)
Bonjour,
J'ai laissé un message à nos développeurs pour qu'ils vérifient ce comportement,
En attendant, pourriez-vous m'aider à reproduire ce problème ? Je ne suis pas connecté au VPN de votre entreprise, ni n'ai accès à votre compte administrateur et pourtant le sélecteur de langue fonctionne correctement,
Est-ce que c'est comme ça que ça doit fonctionner ou est-ce qu'il y a un statut spécifique ou des conditions de connexion que vous devez suivre pour que le problème se reproduise ?
---
Note : J'ai fait quelques recherches sur admin-ajax.php, j'ai découvert que l'appel à ce fichier ne cause pas de problème de sécurité, pour les utilisateurs non authentifiés et non autorisés, vous devrez faire deux exceptions spécifiques à votre VPN / Firewall / Apache .htaccess, qui sont :
Effectivement là cela va fonctionner car j'ai fait un hook pour passer par dessus WPML
pour éviter de faire l'appel au fichier Xdomaine qui gère l'ajax et l'appel aux fichiers admin-ajax.php quand on est pas connecté a l'admin.
Il me fallait une solution rapide, le site étant en production, je ne pouvais pas laisser le switch langue ne pas fonctionner.
J'ai créé un fichier JS que j'appelle quand on a pas de connexion à l'admin pour faire le changement de langue sans devoir faire une requête AJAX.
Comme dit, je n'ai pas l'appel à ce fichier quand on se met en format tablette et mobile, dans le switch langue qui apparait dans le menu dans ce cas.
Tout comme celui qui est mis dans la EN pour consulter la page en Français.
Mais le switch langue du footer et celui du menu pour écran ordi lui appelle tout le temps le admin-ajax.
Les langues: Anglais (English )Français (Français )Arabe (العربية )
Fuseau horaire: Pacific/Easter (GMT-06:00)
Bonjour,
Je vais laisser cette question à notre deuxième niveau car ils devraient avoir une meilleure idée de la raison pour laquelle le sélecteur de langue se comporte différemment entre la version de bureau et la version mobile du site,
J'ai demandé spécifiquement pourquoi admin-ajax n'est pas appelé lors de l'utilisation du sélecteur de langue sur la version mobile et si nous pouvons le faire fonctionner sans lui sur la version de bureau,
Je reviendrai vers vous dès que j'aurai obtenu une réponse,
Les langues: Anglais (English )Français (Français )Arabe (العربية )
Fuseau horaire: Pacific/Easter (GMT-06:00)
Bonjour,
J'ai quelques suggestions de notre équipe,
Nous venons de vérifier sur un site de test que le sélecteur de langue par défaut dans le pied de page utilise des rafraîchissements réguliers de la page, il n'utilise pas de requêtes ajax. Utilisez-vous un sélecteur de langue spécifique ?
Nous pensons que cela est dû au fait que le sélecteur de langue se rafraîchit et appelle donc admin-ajax pour une requête ajax de refresh, alors que le mobile peut ne pas le faire.
Il faut donc essayer le hook pour désactiver la navigation ajax OU utiliser le type de sélecteur de langue qui n'utilise pas les requêtes ajax,