Иногда бывает так, что нам необходимо изменить директорию загрузки медиа файлов на свою. Например самое простое, попросту отказаться от распределения файлов по директориям состоящий из год/месяц/дата. Это сделать легко, достаточно перейти в Настройки - Медиафайлы и снять галочку с Помещать загруженные мной файлы в папки по месяцу и году . Но обратите внимание, если предполагается, что сайт у вас очень большой, т.е много изображений, то делать это не рекомендуется, так как при необходимости сделать листинг файлов, например через ФТП , то вы это не сможете, так как есть ограничения на кол-во отображаемых файлов.
Organize Media Folder . Если нужно изменить директорию на свою, то можно воспользоваться плагином, который позволит задать необходимую директорию загрузки, а так же переносить файлы из существующих директорий.
Т.е можно выбрать как постоянную директорию, так и выбирать при загрузки, указав текущую директорию через верхнюю панель. Но что делать если нужно загружать динамически, например в зависимости от id записи. А для этого есть другой плагин.
Custom Upload Dir - плагин в котором можно создать шаблон загрузки медиафалов. Как пример будем рассматривать шаблон с указанием id записи в качестве директории.
Из изображения видно, что простые настройки дают нам результат. Мало того, мы можем ввести id записи и посмотреть на тестовый результат. Т.е вводим id записи и нажимает Update Settings
Без плагинов тоже можно. Если вы любите как и я, короткие коды php сниппеты, то можно воспользоваться подобным решением, которое я использую на некоторых сайтах, где нужно загружать файлы в директорию записи, а если загружаем вне редактирования записи то загружается в корень т.е в uploads . Ниже код
<?php
add_filter('upload_dir', 'custom_upload_dir');
function custom_upload_dir($param){
$mydir = '/' . intval($_REQUEST['post_id']) ;
$param['path'] = $param['basedir'] . $mydir;
$param['url'] = $param['baseurl'] . $mydir;
return $param;
}
Данный код работает, но учтите, если вы не сохранили запись, т.е в черновик и у него не появилось его id , то загруженные изображение упадут в uploads, поэтому сначала сохраните запись как черновик.