Filtr dnia: sanitize_file_name – czyli nazwy plików bez znaków specjalnych

Bardzo często przy migracji witryny występuje problem z nazwami plików, a dokładniej z kodowaniem polskich znaków diakrytycznych. Jeżeli szukasz jak masowo zamienić już istniejące pliki, to muszę cię rozczarować, ten wpis nie jest o tym. Ten wpis jest o tym, jak nie dopuścić do takiej sytuacji, czyli zgodnie z zasadą, że lepiej jest zapobiegać, niż leczyć.

Dla mnie, ten kawałek kodu jest czymś co zawsze instaluje na wszystkich WordPressach, w których mam prawo to zrobić.

add_action( 'sanitize_file_name', 'iworks_sanitize_file_name' );
if ( ! function_exists( 'iworks_sanitize_file_name' ) ) {
  function iworks_sanitize_file_name( $filename ) {
    $de_from  = array( 'ä','ö','ü','ß','Ä','Ö','Ü' );
    $de_to    = array( 'ae','oe','ue','ss','Ae','Oe','Ue' );
    $filename = str_replace( $de_from, $de_to, $filename );
    $pl_from  = array( 'ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż' );
    $pl_to    = array( 'a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z' );
    $filename = str_replace( $pl_from, $pl_to, $filename );
    $filename = preg_replace( '/[^A-Za-z0-9\._]/', '-', $filename );
    $filename = preg_replace( '/[_ ]+/', '-', $filename );
    $filename = preg_replace( '/%20/', '-', $filename );
    return $filename;
  }
}

Kod do pobrania

Gotowy kod w formie wtyczki, możesz pobrać poniżej.

[zip href="http://iworks.pl/wp-content/uploads/2017/03/iworks-clear-file-name.php-.zip"]iworks_clear_file_name.php[/zip]

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

Aktualizacja: 2017-03-02 09:00

Jak słusznie zasugerował w komentrzu Sebastian jest wtyczka, która obsługuje wszystko co można sobie zażyczyć: Filenames to latin i ląduje ona w moich mu-wtyczkach na stałe.

Poprzedni

Jak radzić sobie z gwarancją i poprawkami po wdrożeniu?

Następne

Być Wtyczką, czy nie być Wtyczką?

2 komentarze

  1. Sebastian

    Ja instaluje wtyczkę Filenames to latin na każdym wp

Oparte na WordPress & Theme by Anders Norén