WordPress как на ладони
wordpress jino

wp_upload_dir() WP 2.0

Получает данные о каталоге (папке) загрузок в виде массива параметров.

Папка загрузок как правило называется 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().

Используется в: wp_get_upload_dir().
Работает на основе: _wp_upload_dir()
✈ 1 раз = 0.000233с = быстро | 50000 раз = 0.23с = очень быстро PHP 7.0.5, WP 4.5
Хуки из функции:
Возвращает

Массив данных о каталоге загрузок:

array (
  'path'    => '/home/wp-kama.ru/public_html/wp-content/uploads/2016/04',
  'url'     => 'http://wp-kama.ru/wp-content/uploads/2016/04',
  'subdir'  => '/2016/04',
  'basedir' => '/home/wp-kama.ru/public_html/wp-content/uploads',
  'baseurl' => 'http://wp-kama.ru/wp-content/uploads',
  'error'   => false,
)

где

  • path - путь на сервере до каталога загрузок с учетом года и месяца, если соответствующая опция включена в админке.

  • url - УРЛ каталога загрузок с учетом года и месяца, если соответствующая опция включена в админке.

  • subdir - название конечного каталога загрузок внутри wp-content/uploads.

  • basedir - путь на сервере до общего каталога загрузок.

  • baseurl - УРЛ до общего каталога загрузок.

  • error - в случае ошибки при получении данных элемент массива error будет равен true.

Использование

$upload_dir = wp_upload_dir( $time );
$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-site.ru/public_html/wp-content/uploads/2014/02
	[url] => http://wp-site.ru/wp-content/uploads/2014/02
	[subdir] => /2014/02
	[basedir] => /home/k/wp-site.ru/public_html/wp-content/uploads
	[baseurl] => http://wp-site.ru/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-site.ru/public_html/wp-content/uploads/2015/08
http://wp-site.ru/wp-content/uploads/2015/08
/2015/08
/home/wp-site.ru/public_html/wp-content/uploads
http://wp-site.ru/wp-content/uploads
*/

#3 УРЛ каталога загрузок WordPress

Получим УРЛ каталога загрузок WordPress:

$upload_dir = wp_upload_dir();
echo $upload_dir['baseurl']; //> /home/wp-site.ru/public_html/wp-content/uploads

Заметки

#1 Функция создает папки

При использовании функция wp_upload_dir() создает поддиректорию, если её не существует. Если указан параметр $time, то будет создана указанная поддиректория, в противном случае директория текущего месяца. Чтобы директория была создана не обязательно нужно сохранить файл.

#2 Название папки

Если вам нужно перенести папку загрузок /uploads, вам нужно определить константу UPLOADS в файле wp-config.php. Например так:

define( 'UPLOADS', trailingslashit( WP_CONTENT_DIR ).'custom_uploads_name' );

#3 Названия каталога загрузок

Чтобы получить название папки загрузок, относительно каталога контента, обычно можно использовать такую конструкцию. Тут подразумевается, что каталог загрузок находится в каталоге контента:

$upload_dir_name = false;
if ( defined( 'UPLOADS' ) )
	str_replace( trailingslashit( WP_CONTENT_DIR ), '', untrailingslashit( UPLOADS ) );

Код wp upload dir: wp-includes/functions.php VER 4.9.1

<?php
function wp_upload_dir( $time = null, $create_dir = true, $refresh_cache = false ) {
	static $cache = array(), $tested_paths = array();

	$key = sprintf( '%d-%s', get_current_blog_id(), (string) $time );

	if ( $refresh_cache || empty( $cache[ $key ] ) ) {
		$cache[ $key ] = _wp_upload_dir( $time );
	}

	/**
	 * Filters the uploads directory data.
	 *
	 * @since 2.0.0
	 *
	 * @param array $uploads Array of upload directory data with keys of 'path',
	 *                       'url', 'subdir, 'basedir', and 'error'.
	 */
	$uploads = apply_filters( 'upload_dir', $cache[ $key ] );

	if ( $create_dir ) {
		$path = $uploads['path'];

		if ( array_key_exists( $path, $tested_paths ) ) {
			$uploads['error'] = $tested_paths[ $path ];
		} else {
			if ( ! wp_mkdir_p( $path ) ) {
				if ( 0 === strpos( $uploads['basedir'], ABSPATH ) ) {
					$error_path = str_replace( ABSPATH, '', $uploads['basedir'] ) . $uploads['subdir'];
				} else {
					$error_path = basename( $uploads['basedir'] ) . $uploads['subdir'];
				}

				$uploads['error'] = sprintf(
					/* translators: %s: directory path */
					__( 'Unable to create directory %s. Is its parent directory writable by the server?' ),
					esc_html( $error_path )
				);
			}

			$tested_paths[ $path ] = $uploads['error'];
		}
	}

	return $uploads;
}

Cвязанные функции

Из метки: path directory (путь папка)

Еще из метки: URL (УРЛ Ссылка)

Еще из раздела: Загрузка (upload)

petrozavodsky 706alkoweb.ru
Делаю веб, можно сказать работаю с WordPress. Временами живу в Краснодаре.
wp_upload_dir 4 комментария
  • оборудование для производ ... cайт: www.beysanmak.com/ru/kampanya.asp

    Благодарю за информацию!..

    Ответить3.5 года назад #
  • Дмитрий

    Возвращает адрес с обратными слешами Z:\home****\www/wp-content/uploads/2014/06, как это исправить?

    Ответить3.5 года назад #
    • Kama4697

      Заменить обратный слэш на простой:

      $rrr = 'Z:\home\****\www/wp-content/uploads/2014/06';
      $rrr = str_replace('\', '/', $rrr);
      Ответить3.5 года назад #
    • petrozavodsky706 cайт: alkoweb.ru

      если в элементе с ключом basedir то это нормально для мащины на windows и денвера, будет, работать так, я проверял

      Ответить3.5 года назад #

Здравствуйте, !

Ваш комментарий
Предпросмотр