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.

pobierz plik: iworks_clear_file_name.php

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.

Published by Marcin Pietrzak

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nec ante nec lectus laoreet feugiat. Donec aliquet justo in tellus gravida, id elementum magna convallis. Curabitur faucibus mauris sed risus egestas lobortis. Nunc vestibulum elit ac ipsum ultricies, non ultrices lorem ultrices. Nam at dolor id elit lobortis ullamcorper. Fusce commodo turpis nisi, efficitur efficitur libero dictum eget. Morbi viverra dignissim lacus. Vestibulum mi justo, dictum ut iaculis eget, scelerisque et nibh.

2 replies on “Filtr dnia: sanitize_file_name – czyli nazwy plików bez znaków specjalnych”

Comments are closed.

Więcej w kodowanie, sanitize_file_name
Po aktualizacji do WP 4.1.2 nie działa zapisywanie

Po aktualizacji WordPressa do wersji 4.1.2 wiele osób zgłasza problemy z zapisem swoich wpisów. Ze względu na to, że ta...

Zamknij