Donc, j'ai 2 sites. L'un en production et l'autre en développement. Ils ont le même contenu et les mêmes téléchargements.
En production, les images dont le nom contient æ
, ø
ou å
font remplacer le caractère par quelque chose d'autre, par exemple, ø
est remplacé par ø
et est ensuite sauvegardé dans le dossier de téléchargement. Et il fonctionne! Wordpress obtient en quelque sorte la bonne image lorsque je le demande.
E.g: wp-content/upload/2015/01/interiørtips.jpg
affichera l'image interiørtips.jpg
.
Dans la base de données, les références aux images sont enregistrées normalement, y compris les caractères spéciaux. æøå
est utilisé dans le nom, pas une autre combinaison de caractères obscure. Cela signifie que la base de données est ok.
J'ai exporté tout le contenu de la production vers une nouvelle base de données en développement, mais toutes les images contenant un æ
, ø
ou å
ne se chargeront pas de la même manière qu'en production. La requête wp-content/upload/2015/01/interiørtips.jpg
ne chargera rien, mais wp-content/upload/2015/01/interiørtips.jpg
le fera. C'est le contraire du comportement en production.
Est-ce que quelqu'un sait quelque chose à ce sujet?
EDIT: Je vais probablement juste un outil de renommer. Mais si vous avez des idées, partagez-les.
La fonction WP sanitize_file_name()
ne gère pas ces caractères par défaut.
Vous pouvez ajouter des filtres et les désinfecter pour éviter les problèmes d’encodage.
function mamaduka_sanitize_file_name( $filename ) {
$filename = strtr($filename, 'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƒƠơƯưǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǺǻǼǽǾǿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyyAAAAAAAECEEEEIIIIDNOOOOOOUUUUYsaaaaaaaeceeeeiiiinoooooouuuuyyAaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkLlLlLlLlllNnNnNnnOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzsfOoUuAaIiOoUuUuUuUuUuAaAEaeOo');
return $filename;
}
add_filter( 'sanitize_file_name', 'mamaduka_sanitize_file_name' );
Exemple de code pour ce commentaire de trace - https://core.trac.wordpress.org/ticket/16330#comment:22 .