Odezwała się dziś do mnie klientka, że chciała do kursu dodać plik tekstowy (rozszerzenie .txt) i nie może, bo WordPress jej nie pozwala. No nie pozwala, bo WordPress ma określoną listę plików, jakie można do niego wgrać za pomocą biblioteki mediów, i choć dozwolonych formatów plików jest całkiem sporo, to nie ma wśród nich tak podstawowych, jak archiwum ZIP (.zip), archiwum 7-Zip (.7z) czy właśnie zwykłych plików tekstowych (.txt). Na szczęście jak to w WordPressie często bywa – dla chcącego nie ma nic trudnego. Trzeba tylko wiedzieć co i jak…
Niestandardowe typy plików w bibliotece mediów w WordPressie
Jeśli za pomocą biblioteki mediów w WordPressie spróbujemy wgrać plik w formacie, który nie występuje na dozwolonej liście, to otrzymamy np. taki błąd:
Najprostszy sposób, by to obejść, to opisywany m.in. w naszym eBooku „Plik wp-config.php w WordPressie dla początkujących i zaawansowanych”, czyli dodanie odpowiedniej linijki do pliku wp-config.php:
define('ALLOW_UNFILTERED_UPLOADS', true);
Od tego momentu wszystkie pliki będą zapisywane, bo WordPress nie będzie ich filtrował:
Jest to opcja nie tylko szybka do wdrożenia, ale i skuteczna. Jednak jej wadą jest to, że w ten sposób tracimy całkowitą kontrolę nad tym, jakie pliki mogą być dodawane do biblioteki mediów, co może być niebezpieczne. I nawet jeśli muszą zaistnieć dodatkowe czynniki, by wynikło z tego realne zagrożenie dla kogokolwiek, to jest to opcja, której raczej nie korzystam. Chyba że w środowisku testowym…
I w tym momencie z pomocą przychodzi filtr „upload_mimes”, dzięki któremu możemy nie tylko dodać wybrane przez nas typy plików do listy dozwolonych, ale też usunąć z niej jakieś, jeśli zajdzie taka potrzeba.
By np. dodać wsparcie dla wspominanych plików tekstowych (.txt) i archiwów w formacie 7-Zip (.7z) wystarczy np. do pliku functions.php w motywie potomnym dodać taki kod:
function webinsider_wp_upload_mimes_types( $mimes ){
$mimes['txt'] = 'text/plain';
$mimes['7z'] = 'application/x-7z-compressed';
return $mimes;
}
add_filter( 'upload_mimes', 'webinsider_wp_upload_mimes_types', 1, 1 );
I teraz plik archiwum 7-Zip (.7z) zostanie zapisany, ale już plik wykonywalny (.exe) nie, bo tego formatu nie dodaliśmy do listy dozwolonych:
Jeśli zamiast dodawać, chcielibyśmy np. usunąć obsługę plików Adobe PDF (.pdf), można skorzystać z takiego kodu:
function webinsider_wp_upload_mimes_types( $mimes ){
unset($mimes['pdf']);
return $mimes;
}
add_filter( 'upload_mimes', 'webinsider_wp_upload_mimes_types', 1, 1 );
Można oczywiście też połączyć dodawanie i usuwanie w ramach jednej funkcji:
function webinsider_wp_upload_mimes_types( $mimes ){
$mimes['txt'] = 'text/plain';
$mimes['7z'] = 'application/x-7z-compressed';
unset($mimes['pdf']);
return $mimes;
}
add_filter( 'upload_mimes', 'webinsider_wp_upload_mimes_types', 1, 1 );
Oczywiście typu plików do dodania i usunięcia są przykładowe i można je zastąpić innymi. W przypadku dodawania nowych formatów plików, może przydać się określenie typu/formatu MIME dla pliku, co można zrobić np. na tej stronie.
- DJI Lito 1 i DJI Lito X1, czyli nowa seria dronów Mini, ale raczej nie zamiast Mini Pro - 1970-01-01
- Zmiana „w locie” poziomu logowania w ESPHome za pomocą komponentu „select” (nie tylko z poziomu Home Assistant) - 1970-01-01
- Gdy chcesz wkleić hasło wygenerowane przez menedżer haseł, ale w KSeF uznali, że wygodniej i bezpieczniej będzie, jak je wpiszesz ręcznie - 1970-01-01









