В WordPress 3.8 появилась новая система загрузки медиа-файлов, состоящая из загрузчика и библиотеки. Эта система очень удобная и современная. Однако не все разработчики плагинов умеют правильно её использовать и потому игнорируют оную в своих плагинах. Такая ситуация сложилась, главным образом, потому, что нигде явным образом толком не описано как с нею обращаться. В этой короткой статье я попробую исправить сей вопиющий недочёт.
Основной и, пожалуй, главный вопрос – как изменить папку загрузки файлов для своего плагина? Существует два способа для выполнения этой задачи.
- Ручной
- Программный
Ручной способ – изменение (переопределение) переменной UPLOADS
define('UPLOADS', 'wp-content/myimages');
в файле конфигурации WordPress, нам не подходит априори, так как, во-первых, требует ручного вмешательства пользователя, а во-вторых, меняет путь к файлам загрузки на всё время существования заданной переменной.
Программный способ – действительно то, что нужно. Существует несколько вариантов использования этого способа, но все они базируются на использовании фильтра upload_dir и, фактически, являются различными интерпретациями одного способа. Я покажу наиболее простой из них.
Основным условием данного примера является то, что мы должны загружать файлы для нашего плагина в папку определённую нашим плагином, остальные файлы должны загружаться в папки заданные правилами WordPress.
Для ООП:
Разберём пример:
$expected_url – линк страницы нашего плагина.
$mu – проверяем является ли REFERER (страница с которой зашли) страницей нашего плагина. На первый взгляд это странно – ведь мы загружаем файл со страницы нашего плагина. Да это так. Но загрузка происходит с помощью AJAX-запроса и, следовательно, во второй копии WordPress на которую загрузчик зашёл со страницы нашего плагина. Если мы будем проверять текущую страницу, ничего не выйдет – загрузка пойдёт по правилам WordPress.
Далее сама проверка. Если ничего не проверять, все файлы будут загружаться в папку нашего плагина.
В фильтре мы определяем функцию перенаправления. В самой функции определяется папка нашего плагина и производится перенаправление.
Вот собственно и всё. Ничего сложного.
© 2015 – 2018, minimus. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.
Нет комментариев.