wp_upload_dir()
Получает данные о каталоге загрузок: путь, УРЛ.
Папка загрузок как правило называется uploads
и расположена в папке контента wp-contents.
Проверяет опцию upload_path
, которая должна быть путем от корня сайта и если опция установлена, будет использована она, а если не установлена, тогда путь будет равен: WP_CONTENT_DIR/uploads
. Однако, если определена константа UPLOADS
, тогда она перепишет опцию upload_path
и путь WP_CONTENT_DIR/uploads
.
УРЛ каталога загрузок устанавливается через опцию upload_url_path
или используется конструкция WP_CONTENT_URL/uploads
.
Если опция uploads_use_yearmonth_folders
установлена (галочка в настройках медиафайлов в админ-панели), тогда к путям и ссылкам будет добавлен текущий год и месяц, в формате /ГГГГ/ММ
.
Если WordPress не сможет определить путь, тогда элемент массива error
будет содержать сообщение об ошибке. Ошибка может быть, когда родительская директория запрещает создавать дочерние (не хватает прав на запись).
Более быстрый аналог этой функции: wp_get_upload_dir().
Мультисайт
Для мультисайта функция вернет данные папки загрузок текущего сайта. Например:
[basedir] => /var/app/www/wp-content/uploads/sites/2 [baseurl] => https://example.com/wp-content/uploads/sites/2
Заметки
#1 Функция создает папки
При использовании функция wp_upload_dir() создает поддиректорию, если её не существует. Если указан параметр $time, то будет создана указанная поддиректория, в противном случае директория текущего месяца. Чтобы директория была создана не обязательно нужно сохранить файл.
#2 Название папки
Если вам нужно перенести папку загрузок /uploads
, вам нужно определить константу UPLOADS
в файле wp-config.php. Например так:
define( 'UPLOADS', trailingslashit( WP_CONTENT_DIR ) . 'custom_uploads_name' );
#3 Названия папки uploads
Чтобы получить название папки загрузок, относительно каталога контента, обычно можно использовать такую конструкцию. Тут подразумевается, что каталог загрузок находится в каталоге контента:
$upload_dir_name = false; if ( defined( 'UPLOADS' ) ) { $upload_dir_name = = str_replace( trailingslashit( WP_CONTENT_DIR ), '', untrailingslashit( UPLOADS ) ); }
ВАЖНО: константа UPLOADS
не определена по дефолту в ВП. Она может быть определена только для мультисайта и только если установлена опция ms_files_rewriting=1
, но обычно значение этой опции 0
и UPLOADS
константа не определена. Подробнее смотрите код функции ms_upload_constants().
Хуки из функции
Возвращает
Массив
. Массив данных о каталоге загрузок:
array ( 'path' => '/home/example.com/public_html/wp-content/uploads/2016/04', 'url' => 'http://example.com/wp-content/uploads/2016/04', 'subdir' => '/2016/04', 'basedir' => '/home/example.com/public_html/wp-content/uploads', 'baseurl' => 'http://example.com/wp-content/uploads', 'error' => false, )
где:
-
path
- путь на сервере до каталога загрузок с учетом года и месяца, если соответствующая опция включена в админке. -
url
- УРЛ каталога загрузок с учетом года и месяца, если соответствующая опция включена в админке. -
subdir
- название конечного каталога загрузок внутри wp-content/uploads. -
basedir
- путь на сервере до общего каталога загрузок. -
baseurl
- УРЛ до общего каталога загрузок. error
- в случае ошибки при получении данных элемент массива error будет равен true.
Использование
wp_upload_dir( $time, $create_dir, $refresh_cache );
- $time(строка)
- Поддиректория каталога загрузок. Обычно это папки
/ГГГГ/ММ
в каталоге uploads. Тут мы можем указать любую поддиректорию в формате/ГГГГ/ММ
, от этого параметра зависят данные получаемого массива: [path] [url] [subdir].
По умолчанию: null (папка текущего месяца) - $create_dir(логический)
- Нужно ли проверять и создавать каталог загрузок если его нет?
По умолчанию: true - $refresh_cache(логический)
- Нужно ли обновить кэш? Результат работы функции сохраняется и отдается из кэша. Если установить тут true, то кэш будет пересоздан.
По умолчанию: false
Примеры
#1 Что вернет массив
$upload_dir = wp_upload_dir(); print_r( $upload_dir ); // вернет: /* Array ( [path] => /home/k/wp-example.com/public_html/wp-content/uploads/2014/02 [url] => http://wp-example.com/wp-content/uploads/2014/02 [subdir] => /2014/02 [basedir] => /home/k/wp-example.com/public_html/wp-content/uploads [baseurl] => http://wp-example.com/wp-content/uploads [error] => ) */
#2 Получение всех элементов в виде объекта
Удобнее получать элементы в виде объекта, так с ними удобно работать:
$upload_dir = (object) wp_upload_dir(); if( ! $upload_dir->error ){ echo $upload_dir->path ."\n"; echo $upload_dir->url ."\n"; echo $upload_dir->subdir ."\n"; echo $upload_dir->basedir ."\n"; echo $upload_dir->baseurl ."\n"; } /* получим: /home/wp-example.com/public_html/wp-content/uploads/2015/08 http://wp-example.com/wp-content/uploads/2015/08 /2015/08 /home/wp-example.com/public_html/wp-content/uploads http://wp-example.com/wp-content/uploads */
#3 УРЛ каталога загрузок WordPress
Получим УРЛ каталога загрузок WordPress:
$upload_dir = wp_upload_dir(); echo $upload_dir['baseurl']; //> http://wp-example.com/wp-content/uploads
Список изменений
С версии 2.0.0 | Введена. |