Comment retirer automatiquement les accents des fichiers medias uploadés dans WordPress ?

On a tendance à oublier, mais le web n’aime généralement pas les noms de fichiers accentués. A cause des différents types d’encodages et systèmes d’exploitation, un caractère é ou â pourra poser problème pour être interprété.

Le coup « classique » est celui d’une image envoyée sur son site WordPress qui s’affiche bien sur Google Chrome, mais qui déclenche une erreur 404 sur Mozilla Firefox ou Safari.

Grâce à ce petit bout de code, à insérer dans son fichier functions.php, on retirera automatiquement les accents des futurs uploads sur le site. Pensez à retirer la première ligne <?php if (!defined('ABSPATH')) die('Restricted Area'); si vous insérez le code dans functions.php (le code suivant est prévu pour une utilisation en tant que mu-plugin).

Un petit bout de code bien pratique lorsque l’on confie l’administration d’un site à quelqu’un qui ne prêtera pas attention aux noms des fichiers uploadés.

Le code suivant a été créé par Mickaël Gris et publié sur le site WP channel, merci à lui pour ce snippet super utile.

<?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);

Laissez un commentaire





Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.