J'ai essayé les deux, mais le message d'erreur suivant s'affiche toujours: "Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité."
// add support for webp mime types
function webp_upload_mimes( $existing_mimes ) {
// add webp to the list of mime types
$existing_mimes['webp'] = 'image/webp';
// return the array back to the function with our added mime type
return $existing_mimes;
}
add_filter( 'mime_types', 'webp_upload_mimes' );
function my_custom_upload_mimes($mimes = array()) {
// add webp to the list of mime types
$existing_mimes['webp'] = 'image/webp';
return $mimes;
}
add_action('upload_mimes', 'my_custom_upload_mimes');
Des idées?
Il est nécessaire d'utiliser le filtre wp_check_filetype_and_ext
pour définir le type mime et l'extension des fichiers webp, en plus d'utiliser le filtre upload_mimes
pour ajouter le type mime à la liste des mimes téléchargeables.
/**
* Sets the extension and mime type for .webp files.
*
* @param array $wp_check_filetype_and_ext File data array containing 'ext', 'type', and
* 'proper_filename' keys.
* @param string $file Full path to the file.
* @param string $filename The name of the file (may differ from $file due to
* $file being in a tmp directory).
* @param array $mimes Key is the file extension with value as the mime type.
*/
add_filter( 'wp_check_filetype_and_ext', 'wpse_file_and_ext_webp', 10, 4 );
function wpse_file_and_ext_webp( $types, $file, $filename, $mimes ) {
if ( false !== strpos( $filename, '.webp' ) ) {
$types['ext'] = 'webp';
$types['type'] = 'image/webp';
}
return $types;
}
/**
* Adds webp filetype to allowed mimes
*
* @see https://codex.wordpress.org/Plugin_API/Filter_Reference/upload_mimes
*
* @param array $mimes Mime types keyed by the file extension regex corresponding to
* those types. 'swf' and 'exe' removed from full list. 'htm|html' also
* removed depending on '$user' capabilities.
*
* @return array
*/
add_filter( 'upload_mimes', 'wpse_mime_types_webp' );
function wpse_mime_types_webp( $mimes ) {
$mimes['webp'] = 'image/webp';
return $mimes;
}
J'ai testé cela sur WP v5.0.1 et j'ai pu télécharger des fichiers webp après avoir ajouté ce code.
Parfois, les téléchargements sont limités par votre hôte. Essayez de définir la constante ALLOW_UNFILTERED_UPLOADS
permettant le téléchargement pour chaque type de fichier:
define( 'ALLOW_UNFILTERED_UPLOADS', true );
Utilisez-le dans votre fichier wp-config.php
pendant un moment, à des fins de test. Ensuite, chargez à nouveau votre fichier. Si cela ne fonctionne toujours pas, il est probable que l'hébergement a bloqué le téléchargement de ce type de fichier. Assurez-vous de supprimer la constante dès que possible, lorsque vous avez fini d'essayer.
De plus, vous pouvez utiliser la fonction get_allowed_mime_types()
pour vérifier les mimes de téléchargement autorisés.