it-swarm.com.de

Zulassen von WebP-Uploads?

Ich habe beide ausprobiert, erhalte jedoch weiterhin die Fehlermeldung: "Dieser Dateityp ist aus Sicherheitsgründen nicht zulässig."

// 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');

Irgendwelche Ideen?

2

Es ist erforderlich, den wp_check_filetype_and_ext-Filter zu verwenden, um den Mime-Typ und die Erweiterung für Webp-Dateien festzulegen. Außerdem muss der upload_mimes-Filter verwendet werden, um den Mime-Typ zur Liste der hochladbaren Mimes hinzuzufügen.

/**
 * 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;
}

Ich habe dies auf WP v5.0.1 getestet und konnte nach dem Hinzufügen dieses Codes Webp-Dateien hochladen.

1
Dave Romsey

Manchmal werden die Uploads von Ihrem Host begrenzt. Versuchen Sie, die ALLOW_UNFILTERED_UPLOADS-Konstante zu definieren, die das Hochladen für jeden Dateityp ermöglicht:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Verwenden Sie dies zu Testzwecken für einen Moment in Ihrer wp-config.php-Datei. Laden Sie dann Ihre Datei erneut hoch. Wenn dies immer noch nicht funktioniert, hat das Hosting wahrscheinlich das Hochladen dieses Dateityps blockiert. Stellen Sie sicher, dass Sie die Konstante so schnell wie möglich entfernen, wenn Sie fertig sind.

Darüber hinaus können Sie mit der Funktion get_allowed_mime_types() die zulässigen Upload-Mimen überprüfen.

1
Jack Johansson