Intereting Posts
Параметры строки запроса из настраиваемых полей, несогласованные результаты Как я могу отобразить форму контакта для внеодных продуктов в WooCommerce? Как добавить параметр в список шаблонов страниц из плагина? Страница параметров темы, включенная с require_once * .php в functions.php, больше не отображается Как разрешить авторизацию только определенным пользователям просмотреть страницу регистрации / страницу входа в систему как пользователя Добавление классов в динамическую боковую панель Примечание: Неопределенный индекс: исправить с isset Пользовательские виджеты в области администратора открываются, затем закрываются после загрузки AJAX Передать переменную виджета на внешнюю функцию Как переключаться между мета-значениями для удаления / обновления пользователя? wp_kses () разделяет атрибуты данных, даже если они находятся в разрешенном списке Сохранять CTP-сообщение для разных значений каждый день без перезаписывания предыдущих значений вставка пользовательского класса li в wp_list_pages Новое меню «Admin Menu» WordPress 3.1 не отображается на моем сайте или в панели инструментов

Как установить тип файла в wp_handle_upload?

Я использую wp_handle_upload чтобы пользователи могли загружать файлы .csv в интерфейсе, и он работает нормально. Мне было интересно, как я могу ограничить это только разрешить .csv файлы, хотя в настоящее время он принимает большое количество типов файлов. Согласно документу, это должно быть возможно, переопределив параметр $overrides но я не уверен, что мне следует передать ему.

Заранее спасибо!

Получил это, глядя на исходный код. Я придумал это:

 wp_handle_upload($file_input, array('test_form' => false, 'mimes' => array('csv' => 'text/csv'))); 

Чтобы переопределить типы mime, просто передайте mimes как массив с ключом, являющимся расширением файла, и значением в качестве типа mime.

Фильтр, который вы хотите использовать, – «upload_mimes» http://xref.yoast.com/trunk/_functions/get_allowed_mime_types.html

Функция get_allowed_mime_types получает отфильтрованный массив $ mimes, поэтому, если вы хотите ТОЛЬКО разрешать загрузку csv, вы можете сделать это:

 add_filter('upload_mimes', 'javiervd_filter_mime_types'); function javiervd_filter_mime_types($mimes) { return array('csv' => 'text/csv'); } 

Обычно с фильтром вы хотите изменить вход и вернуть его, но поскольку вы хотите только загрузить .csv, вы можете просто вернуть массив с одним элементом. Важно отметить, что это переопределит допустимые типы загрузки на сайте.

UPDATE: Хорошо, вот что вы можете сделать. Я предполагаю, что пользователь вышел из системы, и это хороший способ проверить, что это такая загрузка, где разрешены только csvs. Если это не так, вы всегда можете просто изменить свою проверку if и убедиться, что фильтр применяется только к загрузке на передний план.

 add_filter('wp_handle_upload_prefilter' 'javiervd_maybe_filter_mimes'); function javiervd_maybe_filter_mimes($file) { //if not logged in, limit uploads to csvs if(!is_user_logged_in()) { add_filter('upload_mimes', 'javiervd_filter_mime_types'); //add another filter to remove the mime filter so it only applies for the one function call add_filter('wp_handle_upload', 'javierd_remove_mime_filter'); } } function javiervd_filter_mime_types($mimes) { return array('csv' => 'text/csv'); } function javiervd_remove_mime_filter($upload) { remove_filter('upload_mimes', 'javiervd_filter_mime_types'); return $upload; }