wp_upload_dir() WP 2.0.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_upload_dir()
Основа для:
wp_get_upload_dir() ,
wp_upload_bits()
1 раз – 0.000233 сек
(швидко) | 50000 разів – 0.23 сек
(дуже швидко) |
PHP 7.0.5, WP 4.5

Хуки з функції

Повертає

Массив. Масив даних про каталог завантажень:

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 .

Використання

$upload_dir = wp_upload_dir($time);
$time
(рядок)
Піддиректорія каталогу завантажень. Зазвичай, це папки
/ГГГГ/ММв каталозі uploads. Тут ми можемо вказати будь-яку піддиректорію у форматі
/ГГГГ/ММ, від цього параметра залежать дані одержуваного масиву: [path] [url] [subdir].


Типово: null (папка поточного місяця)
$create_dir
(логічний)
Чи потрібно перевіряти та створювати каталог завантажень, якщо його немає?


Типово: true
$refresh_cache
(логічний)
Чи потрібно оновити кеш? Результат роботи функції зберігається та віддається з кешу. Якщо встановити тут true, то кеш буде перестворено.


Типово: false

Приклади

0

#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] =>
)
*/
0

#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
*/
0

#3 УРЛ каталогу завантажень WordPress

Отримаємо УРЛ каталогу завантажень WordPress:

$upload_dir = wp_upload_dir();
echo $upload_dir['baseurl']; //> http://wp-example.com/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 ) );

список змін

З версії 2.0.0Введено.

Код wp_upload_dir() WP 6.0.2

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 information про upload directory.
	 *
	 * @type string $path Base directory and subdirectory або full path to upload directory.
	 * @type string $url Base URL і subdirectory або absolute URL для upload directory.
	 * @type string $subdir Subdirectory if uploads use year/month folders option is on.
	 * @type string $basedir Path without subdir.
	 * @type string $baseurl URL path without subdir.
	 * @type string|false $error False або error message.
	 * }
	 */
	$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 = wp_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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *