web-dev-qa-db-fra.com

Autoriser les téléchargements WebP?

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?

2
Best Dev Tutorials

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.

1
Dave Romsey

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.

1
Jack Johansson