Pour un fonctionnement optimal, WPML a besoin :

  • De la version WordPress 4.4 ou toute version ultérieure
  • PHP 5.6 ou supérieur avec une limite de mémoire d’au moins 128 Mo même si nous recommandons 256 Mo (voir réglages de mémoire WP). N’oubliez pas que la mémoire requise dépend de vos contenus, de votre thème et de tous les modules d’extension.
  • MySQL 5.6 ou supérieur.
  • Que vous puissiez créer des tableaux dans votre base de données.
  • L’API REST de WordPress doit être activée pour que WPML fonctionne correctement.
  • De l’extension de chaînes multi-octets afin de pouvoir utiliser l’outil de traduction de chaînes de WPML
  • De l’extension SimpleXML afin de pouvoir utiliser les fichiers XLIFF dans Gestion de traduction de WPML.
  • La fonction eval() de PHP doit être activée. Nous vous en disons plus dans la rubrique dédiée à eval().

Utiliser des versions anciennes de PHP et MySQL

WPML peut fonctionner sur des versions antérieures de PHP et MySQL, mais nous ne pouvons pas le tester. Si vous utilisez des versions antérieures, nous vous recommandons fortement d’activer le mode de débogage de WPML. Cela permettra de détecter toute erreur PHP et de vous faire savoir si les choses ne fonctionnent pas comme elles le devraient.

N’hésitez pas à nous faire part ici de toute expérience relative au fonctionnement de WPML avec d’autres versions.

Comment savoir quelle version de PHP vous utilisez actuellement

Certaines sociétés d’hébergement mutualisé ont installé PHP5 et PHP7. La meilleure façon de vérifier quelle version vous utilisez réellement est de demander au processeur PHP lui-même (et non au technicien de l’hébergeur).

Créez un fichier appelé php_info.php et placez-le dans votre répertoire WordPress (juste à côté de wp-config.php). Ce fichier doit contenir les éléments suivants :
<?php phpinfo(); ?>

Ce n’est pas sorcier, n’est-ce pas ? Si vous en avez besoin, vous pouvez le télécharger sous forme de fichier ZIP. comme ici : php_info.zip (bien sûr, vous aurez besoin de le décompresser avant de le télécharger sur votre serveur).

Une fois fait, ouvrez un navigateur et accédez à https://votredomaine.com/php_info.php.

Une image similaire à celle ci-dessous devrait s’afficher :

php-info.php indiquant la version PHP sur le serveur
php-info.php indiquant la version PHP sur le serveur

En plus, il indique quelle version de PHP vous utilisez. S’il est écrit PHP Version 5.5, il ne fonctionnera pas. La meilleure chose à faire est d’envoyer un e-mail à votre hébergeur et de lui demander comment activer PHP 5.6 ou supérieur.

Structure de permaliens

WPML ajoute des informations de langue dans les URL. Il a été testé avec les structures de permaliens suivantes :

  • Celle par défaut
  • /%year%/%monthnum%/%postname%/

Explication :

D’autres structures de permaliens peuvent aussi fonctionner mais peuvent causer des problèmes sur différentes configurations. Pour tous nos sites, nous utilisons /%year%/%monthnum%/%postname%/.

Pour les pages, vous obtiendrez exactement les mêmes URL qu’avec /%postname%/. Cependant, avec cette structure de permalien, il n’y a aucun moyen pour WordPress de confondre les pages et les communications, ce qui peut entraîner des problèmes de résolution linguistique.

Utilisation de la fonction eval()

La fonction eval() doit être activée car WPML utilise le cadre TWIG pour sa structure et ses modèles, ce qui fait que WPML dépend de cette fonction.

La plupart des moteurs de modèles populaires, tels que Smarty et TWIG, ont trouvé qu’il était plus rapide d’écrire le code PHP dans un fichier. De cette façon, ils peuvent exploiter la mise en cache OPcode et ne pas exiger la construction d’un environnement d’exécution pour le code de modèle.

TWIG effectue beaucoup de contrôles et d’assainissement pour éviter d’éventuelles attaques, et il est compatible avec WPML. Cependant, nous ne pouvons pas assurer que d’autres développeurs ont effectué les mêmes contrôles que nous en termes de processus d’assurance de la qualité.

Nous étudions toujours des solutions possibles qui ne nécessitent pas la compilation de modèles à la volée et qui rendraient l’utilisation de la fonction eval()superflue. Cependant, pour l’instant, c’est la meilleure solution.

Notez qu’en général, la fonction eval() ne peut pas être désactivée en PHP, mais certaines extensions telles que Suhosin peuvent le faire. Ces extensions peuvent être installées et configurées par votre fournisseur d’hébergement.