替换图片上传 Wordpress 上的非 ASCII 字符



我尝试在函数中包含以下 2 个片段.php

add_filter('sanitize_file_name', 'remove_accents' ); 

add_filter('sanitize_file_name', 'sa_sanitize_spanish_chars', 10);
function sa_sanitize_spanish_chars ($filename) {
return remove_accents( $filename );
}

上传图像时,它应该将法语字符(如"é")替换为标准ASCII字符(如"e")。但它不起作用。

我尝试在 2 个不同的 WP 安装(3.8 和 4.6)中插入代码,但无济于事。

替换字符的全部需求是因为 Safari 无法读取包含非 ASCII 字符的 URL。

Mickaël Gris 的解决方案是以下代码,也适用于 4.6 和 3.8,只是为了确保:

函数 wpc_sanitize_french_chars($filename) {

/* Force the file name in UTF-8 (encoding Windows / OS X / Linux) */
$filemane = 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);

最新更新