WordPress – Lehrzeichen, Umlaute und Sonderzeichen von den Dateinamen beim Hochladen entfernen

Ab und an entstehen PHP bzw. Server Konflikte allein dadurch, dass sich Sonderzeichen in den Dateinamen befinden. Um diesem Problem schon beim Upload in die WordPress Mediathek vorzubeugen habe ich mir ein kleines Script zusammen gebastelt. Die Umsetzung war weder aufwendig noch kompliziert.

Wie sonst auch muss dieser Code nur entweder in die functions.php des Themes eingefügt werden oder man erstellt sich ein eigenes Plugin hierfür.

Als erstes benötigen wir eine Funktion um die Sonderzeichen, Umlaute und Leerzeichen zu entfernen.

function zoechbauer_string_cleaner( $string ) {
    // Leerzeichen durch Minus ersetzen
    $string = str_replace(' ', '-', $string);

    // Umlaute ersetzen
    $umlauts    = array('/ä/', '/ü/', '/ö/', '/Ä/', '/Ü/', '/Ö/', '/ß/');
    $noumlauts  = array('ae', 'ue', 'oe', 'Ae', 'Ue', 'Oe', 'ss');
    $string     = preg_replace( $umlauts, $noumlauts, $string );

    // die restlichen Sonderzeichen entfernen
    $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);

    // mehrere Minusse durch ein einziges ersetzen
    return preg_replace('/-+/', '-', $string);
}

Als nächstes lassen wir den Dateinamen vor dem Upload entsprechend abändern.

function zoechbauer_clean_upload_filename( $filename ) {
    // Dateinamen analysieren
    $info = pathinfo( $filename );
    // Dateiendung auslesen
    $ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    // Dateiname ohne Endung auslesen
    $name = basename($filename, $ext);
    // Dateiname bereinigen
    $name = zoechbauer_string_cleaner( $name );
    // Ausgabeformat: bereinigter Dateiname.Dateiendung
    return $name . $ext;
}
add_filter('sanitize_file_name', 'zoechbauer_clean_upload_filename', 10);

Mit diesen einfachen paar Zeilen Code wird nun aus Dateinamen wie „schönes Bild.jpg“ nun „schoenes-Bild.jpg“. Somit sollte man dadurch von diversen Komplikationen verschont bleiben.

All jene die sich kein eigenes Plugin schreiben wollen können sich mein Plugin auch direkt herunterladen und installieren.

Download – zoechbauer-remove-special-chars