Функция wp_upload_dir()
возвращает массив, содержащий путь и URL текущего каталога загрузок. Она проверяет настройки upload_path
и upload_url_path
, а также учитывает, включена ли опция использования годовых и месячных папок для загрузок. Если директория загрузок не существует, она может быть создана автоматически в зависимости от параметров функции.
wp_upload_dir( string|null $time = null, bool $create_dir = true, bool $refresh_cache = false ): array
Параметры
$time
(string|null): Опциональный параметр, форматированный как ‘yyyy/mm’. По умолчанию равенnull
.$create_dir
(bool): Опционально определяет, нужно ли проверять и создавать директорию загрузок. По умолчаниюtrue
.$refresh_cache
(bool): Опционально определяет, нужно ли обновлять кэш. По умолчаниюfalse
.
Возвращаемое значение
Функция возвращает массив с информацией о каталоге загрузок:
path
: Полный путь к директории загрузок.url
: URL к директории загрузок.subdir
: Подкаталог, если включено использование годовых/месячных папок.basedir
: Путь без подкаталога.baseurl
: URL без подкаталога.error
: Сообщение об ошибке илиfalse
, если ошибок не было.
Пример 1: Получение данных о каталоге загрузок
В этом примере мы получим информацию о каталоге загрузок и выведем ее:
$upload_dir = wp_upload_dir();
print_r($upload_dir);
/* Вывод может быть следующим:
Array
(
[path] => /home/example.com/public_html/wp-content/uploads/2024/10
[url] => https://example.com/wp-content/uploads/2024/10
[subdir] => /2024/10
[basedir] => /home/example.com/public_html/wp-content/uploads
[baseurl] => https://example.com/wp-content/uploads
[error] =>
)
*/
Пример 2: Проверка на наличие ошибок
Вы можете проверить наличие ошибок при получении данных о каталоге загрузок:
$upload_dir = wp_upload_dir();
if ( isset( $upload_dir['error'] ) && $upload_dir['error'] ) {
echo 'Произошла ошибка: ' . $upload_dir['error'];
} else {
echo 'Данные о каталоге загрузок успешно получены!';
}
Пример 3: Использование пользовательских папок
Если вам нужно создать пользовательскую папку для загрузок, вы можете использовать следующий код:
$current_user = wp_get_current_user();
$upload_dir = wp_upload_dir();
if ( isset( $current_user->user_login ) && ! empty( $upload_dir['basedir'] ) ) {
$user_dirname = $upload_dir['basedir'] . '/' . $current_user->user_login;
if ( ! file_exists( $user_dirname ) ) {
wp_mkdir_p( $user_dirname );
}
}
Пример 4: Изменение имени папки загрузок
Если вы хотите изменить имя папки /uploads
, вы можете использовать константу UPLOADS
. Например:
define( 'UPLOADS', trailingslashit( WP_CONTENT_DIR ) . 'custom_uploads_name' );
Этот код нужно разместить в файле wp-config.php
или в другом подходящем месте, чтобы он сработал.
Пример 5: Получение URL и пути с учетом SSL
Для получения правильного URL и пути в условиях SSL, вы можете использовать следующую функцию:
function get_upload_dir_var( $param, $subfolder = '' ) {
$upload_dir = wp_upload_dir();
$url = $upload_dir[$param];
if ( $param === 'baseurl' && is_ssl() ) {
$url = str_replace( 'http://', 'https://', $url );
}
return $url . $subfolder;
}
// Получение URL для папки
echo get_upload_dir_var( 'baseurl', 'myfolder' );
Заключение
Функция wp_upload_dir()
является мощным инструментом для работы с загрузками в WordPress. Она позволяет получить полную информацию о каталоге загрузок, а также автоматически управлять созданием подкаталогов, если это необходимо. Используя эту функцию, вы можете легко настраивать загрузки, создавать пользовательские папки и обрабатывать ошибки.