Empêcher les accents dans les URLs lors de l’upload d’un média
Cette astuce permet de supprimer les accents des adresses URLs des images uploadées à partir de l’administration de WordPress.
Il vous est certainement déjà arrivé d’uploader des images contenant des accents ou autres caractères spéciaux.
Par défaut, WordPress en remplace déjà quelques-uns, mais certains accents persistent et des problèmes de médias en erreur 404 apparaissent coté visiteur.
Pour palier ce problème, je vous propose 1 ligne de code à insérer dans un mu-plugin ou functions.php de votre thème :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
add_filter('sanitize_file_name', 'remove_accents' );
[/pastacode]
34 Commentaires
De le vieille école, je supprime systématiquement tout accent espace, et tous les trucs pas “*nix friendly” , mais sur un site client, voila un hack des plus utiles :)
@lipaonline : Même chose, mais les clients eux … c’est autre chose ! Merci
Merci pour cette astuce. Le problème est si important alors que la solution est si simple.
Je connaissais les plugins mais je ne savais pas que l’on pouvait faire encore plus simple.
@tina : Parfois la solution est en 0 ligne de code tu sais ;) Il faut toujours chercher au plus simple possible.
@li-an : Suffit de me demander, tu me connais maintenant :D
Génial, merci pour l’astuce !
Dans la même veine sans plugin, est il possible de remplacer les espaces blancs et autres caractères spéciaux par des tirets ?
Super intéressant, mais pourquoi c’est pas comme ça par défaut ? xD vous avez une explication ?
@Créalp : tu peux le faire avec un sanitize_key si tu veux être super restrictif. Sinon tu te fais ta règle de regex pour replace.
@Flo : WP est anglais et donc pas d’accents, pourquoi remplace les accents dans les langues qui ne gèrent pas les accents !? C’est couteux pour rien, seuls ceux qui en ont besoin le font, c’est le but d’un hook ;)
Merci Julio pour ta réponse.
Continuez comme ça !
Yes merci pour la ligne qui m’enlève une bonne épine du pied, et surtout pas besoin d’un plugin supplémentaire ;)
Je voudrais pouvoir remplacer les espaces entre les mots par un trait d’union comme dois je faire ?
@tnownet : as tu déjà essayé d’envoyer un fichier contenant une espace ?
Je suis tombé par hasard sur votre article alors que je me demandais justement comment améliorer ça pour mon blog! Le hasard :)
En effet, c’est en migrant mon blog sur un autre serveur que je me suis rendu compte de ce soucis. Sur mon premier serveur, les images avec accent avaient été publiées et utilisées comme cela. Mais en faisant le transfert, le nouveau serveur à converti les accents en caractères spéciaux. Du coup, les liens ne fonctionnaient plus.
Si j’avais suivi vos conseils avant de faire tout ça, j’aurai gagné beaucoup de temps!
Ouf.. vous me sauvez la vie en une ligne. Un trop grand merci..!!! Ca marche.
A noter qu’un patch allant dans ce sens a été proposé : http://core.trac.wordpress.org/ticket/22363 – Milestone: 3.7, il est possible que ça soit intégré en natif dans la version 3.7, tout bientôt. /
Si vous voulez faire avancer le shmilblick, testez le patch, et postez votre feedback sur Trac.
@Manuel : Merci pour l’info ! Ça serait vraiment top de voir le patch dès la 3.7.
Il existe plusieurs améliorations à intégrer au niveau code WordPress pour que tous les points (comme celui évoqué dans cet article) soient intégrés par défaut.
Hello,
Est-ce que cette fonction enlève également les cédilles et les caractères spéciaux comme @#& etc ?
ça a marché ! merci beaucoup :)
Merci pour cette astuce. Il ne me reste qu’à passer à la pratique.
Merci pour l’astuce. Par contre j’aimerai savoir s’il est possible que le lien d’un article ou une page ne tienne pas compte des accents, pour qu’il concorde avec le titre. dans la configuration de wordpress seo, il peu arriver que l’url ne soit pas en concordance avec le mot-clé ou le titre. Par exemple avoir comme titre “Cinéma japonais” pour fausser le calcul de wordpress seo à cause de l’accent sur le “e”.
Astuces fonctionnelle et à la portée de tout un chacun.
Tout bête et diablement efficace! J’ai un plugin appelé “Optimislug” installé sur mon blog. Je pense que vous le connaissez. Il fait bien plus que les accents, mais je pense que je vais alléger mon blog et garder juste votre petite ligne, le reste je le ferais à la main.
@Ermi: Je me pose exactement la même question. Parfois oui, le plugin SEO ne reconnais pas le même mot si il est écrit avec ous ans accent: faut-il y tenir compte ? Pareil pour les stop-words… Je suis toujours en quête du petit point vert! Votre site est super bien organisé, très clair, bravo. J’ai également fait un tour sur ton portfolio Jonathan, eh bien on peut dire que c’est vendeur, ça motive pour s’y mettre plus sérieusement (je suis encore qu’un gros novice).
Bonjour,
pas manque de connaissances, j’ai nommé mes images avec des accents, des espaces, des apostrophes,etc..
comment faire pour tout changer sans reprendre chaque fichier par un par (presque 800 images).
J’ai lu dans les commentaires sanitize_key , regex par replace, mais je ne sais pas utilisé ces codes, juste un exemple ou un lien qui explique,merci
Pour être tout à fait complet, supprimer uniquement les accents n’est pas suffisant !
Il faut également supprimer la ponctuation “française” comme les apostrophes, les croches, le “long tiret du 6”, etc.
Voici un petit GIST qui complète la fonction remove_accents !
https://gist.github.com/herewithme/7704370
Merci et chapeau pour ce petit plugin très efficace que je vais utiliser systématiquement dès aujourd’hui :)
Excellente astuce, j’avais l’habitude de renommer mes images en anglais, plus maintenant :)
@Amaury: En effet, tu as raison. Merci pour ce super complément :)
Hello,
j’ai testé aujourd’hui même cette astuce mais elle ne semble pas fonctionner… idem avec le script d’Amaury. :(
Une idée ?
@Aurélien : No idea. Ce script à toujours bien fonctionner chez moi :/
Super ça marche. Encore merci pour ce gains de temps.
@Amaury Merci, ça marche nickel !
Salut,
Ca semble ne pas fonctionner sur la V.4
J’ai un problème d’accent avec les images, j’ai testé les deux solutions proposées, aucune des deux ne fonctionnent…
Mais merci tout de même.
Une seule chose à dire : MERCI !
Hi, i want to remove accent on wordpress pages link how I can do it too?