Filtr dnia: upload_mimes

Dzisiejszy filtr pozwala na zmianę listy dopuszczonych typów plików, jakie można dodać do mediów. Jest jeden kruczek. Jeżeli WordPress, którego używasz pracuje w trybie pojedynczej witryny, a popełniasz ten błąd, że publikujesz z konta administratora, to opisywany problem i jego rozwiązanie ciebie nie dotyczy. Zwyczajnie go nie zauważysz, bo WP nie ma, a tym bardziej konto administratora nie ma ograniczeń w dodawaniu plików.

Jeżeli natomiast choć raz widziałaś lub widziałeś komunikat:

Przepraszamy, wysyłanie plików tego typu nie jest dozwolone z powodów związanych z bezpieczeństwem.

A nadal potrzebujesz dodać plik takiego typu, to…

Rozwiązanie jest użycie filtra upload_mimes, który pozwala na dołożenia własnych typów plików.

Filtr na wejściu przyjmuje tablicę asocjacyjną, której kluczami są rozszerzenia plików, natomiast wartościami typ mime powiązany z danym rozszerzeniem.

Dodawanie nowych, dopuszczonych rozszerzeń polega tylko na uzupełnienie tej tablicy o potrzebne nam typy. Należy tylko pamiętać, że niektóre typy plików mają więcej niż jedno rozszerzenie.

Na koniec, jak w każdym filtrze, należy naszą wartość, w tym przypadku tablicę, po prostu zwrócić.

add_filter( 'upload_mimes', 'iworks_custom_upload_mimes' );
function iworks_custom_upload_mimes ( $existing_mimes=array() )
{
    $existing_mimes['gzip'] = 'application/x-gzip';
    $existing_mimes['gz']   = 'application/x-gzip';
    $existing_mimes['zip']  = 'application/zip';
    $existing_mimes['csv']  = 'text/csv';
    return $existing_mimes;
}

pobierz plik: iworks_add_allowed_tags.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

Na sam koniec, tym samym filtrem można zabrać możliwość dodawania plików, poprzez zabranie jakiegoś elementu z tablicy. Np. usunięcie możliwości dodawania plików gif:

add_filter( 'upload_mimes', 'iworks_remove_gif_upload_mimes' );
function iworks_remove_gif_upload_mimes ( $existing_mimes=array() )
{
    if ( isset($existing_mimes['gif']) ) {
        unset($existing_mimes['gif']);
    }
    return $existing_mimes;
}