WordPress Snippet: Sonderzeichen aus Dateinamen entfernen
WordPress besitzt seit je her die lästige Angewohnheit, die Namen von hochgeladenen Dateien praktisch unangetastet zu lassen. Sie werden nicht "sanitized". Für englischsprachige WordPress Nutzer relativ irrelevant - für deutschsprachige Nutzer wie wir beispielsweise können öÖs, äÄs, das scharfe S (ß) und weitere Sonderzeichen aber zu Qual werden.
Aus diesem Grund haben wir ein „kleines“ Snippet geschrieben, welches die Dateinamen komplett sanitized und die Sonderzeichen, Leerstellen etc. allesamt entfernt bzw. durch Bindestriche und Underscores ersetzt.
Füge folgendes Snippet in deine functions.php ein:
function sanitize_file_names_pix685894( $filename ){
// Generate Array to retrieve file extension
$fileArr = explode('.', $filename);
// Get Fileextension by storing the last array element into new var
$fileExt = array_values(array_slice( $fileArr, -1))[0];
// delete the last element from array
$newArr = array_pop( $fileArr );
// rebuild filename WITHOUT the file extension
$filename = implode('.', $fileArr);
// remove all special chars from string
$filename = preg_replace('/[^A-Za-z0-9\-]/', '', $filename);
// WP function remove accents
$filename = remove_accents( $filename );
// WP function sanitize filename (remove spaces, etc...)
$filename = sanitize_title( $filename );
// add file extension
$filename = $filename . '.' . $fileExt;
// gogogo!
return $filename;
}
add_filter('sanitize_file_name','sanitize_file_names_pix685894',10);
Das Script wurde auf mehreren unserer eigenen Seiten getestet – jedoch (wie immer) – nutzt ihr das Script auf eigene Gefahr.
Solltet ihr einen Fehler entdecken, hinterlasst doch einen Kommentar! Danke!
Viel Spaß beim Uploaden!
Adrian … habe das mal eingebaut und … Super.
Vielen Dank!
vielen Dank für die Tipps !!! Alles hat geklappt!
Grüße.
Luis