J'ai mis à jour mon site pour wordpress 5.0.1, mais maintenant je ne peux plus télécharger le fichier .vtt. Cette fonction fonctionne correctement sur wordpress 4.9.8
Quand un fichier est chargé, WordPress y jette un coup d'œil pour voir de quoi il est fait, pour connaître le type de mime réel. Ceci est déterminé à partir de cette partie dans wp_check_filetype_and_ext()
:
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$real_mime = finfo_file( $finfo, $file );
Cela signifie que le type mime réel d'un fichier .vtt
est text/plain
.
Les modifications apportées à wp_check_filetype_and_ext()
dans 5.0.1 ont rendu la validation du type mime plus stricte. Maintenant, vous devez vous assurer que le type mime réel du fichier, décrit par $real_mime
, doit correspondre à celui de l'extension de fichier de wp_check_filetype()
, s'il est pris en charge.
La raison pour laquelle l'envoi .vtt
dans la version 5.0.1 échoue est que le type mime réel text/plain
n'est pas le même que text/vtt
de l'extension de fichier .vtt
prise en charge.
Avant la version 5.0.1, la sortie de wp_check_filetype_and_ext()
lors du téléchargement d’un fichier .vtt:
Array ( [ext] => vtt [type] => text/vtt [proper_filename] => )
Après 5.0.1, le résultat est:
Array ( [ext] => [type] => [proper_filename] => )
L'utilisation du filtre wp_check_filetype_and_ext
peut remplacer la logique introduite dans la version 5.0.1, comme l'a démontré Dave Romsey dans la réponse ici .
La même chose semble se passer pour les fichiers .csv
, comme indiqué ici # 45615
Cela devrait être résolu dans WordPress 5.0.3 pour vtt
.
J'ai fait du débogage et j'ai pu reproduire et résoudre le problème, mais malheureusement, je n'ai pas été en mesure de déterminer la cause spécifique. De manière générale, il semble que les fichiers .vtt
échouent à la vérification effectuée par wp_check_filetype_and_ext()
.
J'ai été en mesure de télécharger des fichiers .vtt
(uniquement testés sur WP 5.0.1) après avoir créé un simple plugin contenant le code suivant adapté de cette réponse par brasofilo :
// Sets the extension and mime type for .vtt files.
add_filter( 'wp_check_filetype_and_ext', 'wpse_file_and_ext', 10, 4 );
function wpse_file_and_ext( $types, $file, $filename, $mimes ) {
if ( false !== strpos( $filename, '.vtt' ) ) {
$types['ext'] = 'vtt';
$types['type'] = 'text/vtt';
}
return $types;
}
J'ai également noté que .vtt
sont déjà inclus dans les mimes autorisés par défaut par WP, il ne devrait donc pas (et n'est en fait) pas nécessaire d'ajouter le type mime vtt
à la liste gérée par le upload_mimes
filtre. par exemple.:
add_filter( 'upload_mimes', 'wpse_mime_types');
function wpse_mime_types( $mimes ) {
$mimes['vtt'] = 'text/vtt';
return $mimes;
}
parce que l'entrée pour vtt
existe déjà.
J'utilise un simple fichier de démonstration VTT named test.vtt
avec le contenu suivant:
WEBVTT - Ce fichier n'a pas de repère.