wp_handle_upload() - как загружать файлы в пользовательскую поддиректорию внутри uploads
Функция wp_handle_upload() работает, но загружает файлы туда, куда хочет (uploads/год/месяц).
Вопрос: Есть ли способ указать ей загружать файлы в пользовательскую директорию (uploads/мояпапка)? Или есть какая-то другая функция, которая может это сделать?
Что я пробовал:
move_uploaded_file() из PHP (не смог разобраться с параметром целевой директории - это для плагина, и он должен работать у всех, независимо от структуры их директорий).
Я вставил этот код в основной файл моего плагина. Ничего не произошло. Но в комментариях видно, что у других это работает.
ПОЖАЛУЙСТА, если у вас есть ответ, дайте полный. Я могу получить $_FILES['мойфайл']. Какие шаги нужно сделать дальше, чтобы этот файл попал в uploads/мояпапка?

Вы можете реализовать идею, предложенную Joost, и использовать фильтр upload_dir
для временного изменения пути загрузки в другое место.
/**
* Переопределяем стандартный путь загрузки.
*
* @param array $dir
* @return array
*/
function wpse_141088_upload_dir( $dir ) {
return array(
'path' => $dir['basedir'] . '/mycustomdir',
'url' => $dir['baseurl'] . '/mycustomdir',
'subdir' => '/mycustomdir',
) + $dir;
}
На практике это делается так же просто:
// Регистрируем наш переопределенный путь.
add_filter( 'upload_dir', 'wpse_141088_upload_dir' );
// Выполняем загрузку. WordPress переместит файл в 'uploads/mycustomdir'.
$result = wp_handle_upload( $_FILE['myfile'] );
// Возвращаем стандартные настройки.
remove_filter( 'upload_dir', 'wpse_141088_upload_dir' );

Спасибо за руководство. Это почти работает, но теперь я получаю сообщение: "Невозможно создать директорию wp-content/uploads/mycustomdir. Доступна ли родительская директория для записи сервером?". Мне кажется очевидным, что родительская директория доступна для записи сервером, так как загрузки в нее работают нормально.

Пытаясь решить вышеуказанную проблему, я попробовал создать mycustomdir при активации плагина, используя этот фрагмент кода: http://www.wpmayor.com/code-snippet-to-create-a-directory-within-uploads-folder/ Результат: на моем локальном сервере это работает (как и ваш код) - но на рабочем сервере выводится сообщение: "Плагин сгенерировал 233 символа неожиданного вывода во время активации. Если вы видите сообщения 'headers already sent', проблемы с RSS-лентами или другие проблемы, попробуйте деактивировать или удалить этот плагин."
