Il arrive parfois qu’une image envoyée sur votre site ne s’affiche pas, erreur 404 ! Pourtant cette image existe bien à l’adresse indiquée.En effet lors de l’envoi de l’image via wordpress celui ci nettoie le nom du fichier notamment en remplaçant les espaces par des underscores. Cependant les accents ne sont pas nettoyés ! Sans doute parce que WordPress n’est pas un projet français, cette option n’est pas nécessaire pour les anglosaxons.
Pour éviter cela il y a deux méthodes : la première consiste à insérer un petit code dans votre function.php, la deuxième méthode en utilisant un mu-plugin .
Remplacer les accents dans les noms de vos fichier lors de leur envoi
Une seule petite ligne de code suffit :
add_filter(‘sanitize_file_name’, ‘remove_accents’ );
Renommer les fichiers accentués automatiquement avec un mu-plugin
Ce script PHP est à placer dans le dossier mu-plugins sur vos différentes installations WordPress (consulter cette article pour plus d’information sur les mu-plugins ) .
<?php if (!defined('ABSPATH')) die('Restricted Area'); /* * Plugin Name: Sanitize File Name * Description: Clean file name when uploading files in WordPress. * Version: 20180218 * Author: Mickaël Gris (Neticpro) * Author URI: https://wpchannel.com/renommer-automatiquement-fichiers-accentues-wordpress/ */ function wpc_sanitize_french_chars($filename) { /* Force the file name in UTF-8 (encoding Windows / OS X / Linux) */ $filename = mb_convert_encoding($filename, "UTF-8"); $char_not_clean = array('/À/','/Á/','/Â/','/Ã/','/Ä/','/Å/','/Ç/','/È/','/É/','/Ê/','/Ë/','/Ì/','/Í/','/Î/','/Ï/','/Ò/','/Ó/','/Ô/','/Õ/','/Ö/','/Ù/','/Ú/','/Û/','/Ü/','/Ý/','/à/','/á/','/â/','/ã/','/ä/','/å/','/ç/','/è/','/é/','/ê/','/ë/','/ì/','/í/','/î/','/ï/','/ð/','/ò/','/ó/','/ô/','/õ/','/ö/','/ù/','/ú/','/û/','/ü/','/ý/','/ÿ/', '/©/'); $clean = array('a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','u','u','u','u','y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y','copy'); $friendly_filename = preg_replace($char_not_clean, $clean, $filename); /* After replacement, we destroy the last residues */ $friendly_filename = utf8_decode($friendly_filename); $friendly_filename = preg_replace('/\?/', '', $friendly_filename); /* Lowercase */ $friendly_filename = strtolower($friendly_filename); return $friendly_filename; } add_filter('sanitize_file_name', 'wpc_sanitize_french_chars', 10);
Maintenant à vous de tester le script en envoyant sur votre site un fichier média contenant des accents. Vous allez ensuite constater que l’URL du média a bien été renommée proprement.
Jeanson
Bonjour,
super tuto.
Cependant, j’aimerais savoir s’il est possible de faire cette opération pour des image qui existent déjà dans la database ?
Par exemple, wp-content/uploads/sites/54/résultat-université.jpg qui lorsqu’on migre le WP sur un autre serveur devien wp-content/uploads/sites/54/rsultat-universit.jpg ou même wp-content/uploads/sites/54/r??sultat-universit??.jpg
Merci