# wp_upload_bits()

URL: https://chugunov.pro/api-wordpress/functions/wp_upload_bits/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.0.0.

## Сигнатура

```php
wp_upload_bits( string $name, null|string $deprecated, string $bits, string|null $time = null ): array
```

## Описание

Если возникает ошибка, будет присутствовать ключ «error» с сообщением об ошибке.
В случае успеха ключ «file» будет содержать уникальный путь к файлу, ключ «url» — ссылку на новый файл, а ключу «error» будет присвоено значение false.
Эта функция не перемещает загруженный файл в папку загрузок. Она создаёт новый файл с содержимым из параметра $bits. Если вы переместите загруженный файл и прочитаете его содержимое, то сможете передать имя файла и содержимое этой функции, которая добавит его в папку загрузок.
Права доступа на новый файл функция установит автоматически.

## Параметры

- `$name` `string` — обязательный. Имя файла.
- `$deprecated` `null|string` — обязательный. Не используется. Установите в null.
- `$bits` `string` — обязательный. Содержимое файла
- `$time` `string|null` — необязательный, по умолчанию `null`. Время в формате 'yyyy/mm'.

## Возвращаемое значение

`array` — file stringИмя вновь загруженного файла. url stringURL загруженного файла. type stringТип файла. error string|falseСообщение об ошибке, если она возникла.

## Исходный код

Файл: `wp-includes/functions.php:2901`

```php
function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
	if ( ! empty( $deprecated ) ) {
		_deprecated_argument( __FUNCTION__, '2.0.0' );
	}

	if ( empty( $name ) ) {
		return array( 'error' => __( 'Empty filename' ) );
	}

	$wp_filetype = wp_check_filetype( $name );
	if ( ! $wp_filetype['ext'] && ! current_user_can( 'unfiltered_upload' ) ) {
		return array( 'error' => __( 'Sorry, you are not allowed to upload this file type.' ) );
	}

	$upload = wp_upload_dir( $time );

	if ( false !== $upload['error'] ) {
		return $upload;
	}

	/**
	 * Filters whether to treat the upload bits as an error.
	 *
	 * Returning a non-array from the filter will effectively short-circuit preparing the upload bits
	 * and return that value instead. An error message should be returned as a string.
	 *
	 * @since 3.0.0
	 *
	 * @param array|string $upload_bits_error An array of upload bits data, or error message to return.
	 */
	$upload_bits_error = apply_filters(
		'wp_upload_bits',
		array(
			'name' => $name,
			'bits' => $bits,
			'time' => $time,
		)
	);
	if ( ! is_array( $upload_bits_error ) ) {
		$upload['error'] = $upload_bits_error;
		return $upload;
	}

	$filename = wp_unique_filename( $upload['path'], $name );

	$new_file = $upload['path'] . "/$filename";
	if ( ! wp_mkdir_p( dirname( $new_file ) ) ) {
		if ( str_starts_with( $upload['basedir'], ABSPATH ) ) {
			$error_path = str_replace( ABSPATH, '', $upload['basedir'] ) . $upload['subdir'];
		} else {
			$error_path = wp_basename( $upload['basedir'] ) . $upload['subdir'];
		}

		$message = sprintf(
			/* translators: %s: Directory path. */
			__( 'Unable to create directory %s. Is its parent directory writable by the server?' ),
			$error_path
		);
		return array( 'error' => $message );
	}

	$ifp = @fopen( $new_file, 'wb' );
	if ( ! $ifp ) {
		return array(
			/* translators: %s: File name. */
			'error' => sprintf( __( 'Could not write file %s' ), $new_file ),
		);
	}

	fwrite( $ifp, $bits );
	fclose( $ifp );
	clearstatcache();

	// Set correct file permissions.
	$stat  = @ stat( dirname( $new_file ) );
	$perms = $stat['mode'] & 0007777;
	$perms = $perms & 0000666;
	chmod( $new_file, $perms );
	clearstatcache();

	// Compute the URL.
	$url = $upload['url'] . "/$filename";

	if ( is_multisite() ) {
		clean_dirsize_cache( $new_file );
	}

	/** This filter is documented in wp-admin/includes/file.php */
	return apply_filters(
		'wp_handle_upload',
		array(
			'file'  => $new_file,
			'url'   => $url,
			'type'  => $wp_filetype['type'],
			'error' => false,
		),
		'sideload'
	);
}
```

## История изменений

- 2.0.0 — Introduced.

## Связанные

Используется в: [`clean_dirsize_cache`](https://chugunov.pro/api-wordpress/functions/clean_dirsize_cache/), [`recurse_dirsize`](https://chugunov.pro/api-wordpress/functions/recurse_dirsize/), [`wp_check_filetype`](https://chugunov.pro/api-wordpress/functions/wp_check_filetype/), [`wp_upload_dir`](https://chugunov.pro/api-wordpress/functions/wp_upload_dir/), [`wp_unique_filename`](https://chugunov.pro/api-wordpress/functions/wp_unique_filename/), [`wp_mkdir_p`](https://chugunov.pro/api-wordpress/functions/wp_mkdir_p/), [`current_user_can`](https://chugunov.pro/api-wordpress/functions/current_user_can/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`wp_basename`](https://chugunov.pro/api-wordpress/functions/wp_basename/), [`is_multisite`](https://chugunov.pro/api-wordpress/functions/is_multisite/), [`_deprecated_argument`](https://chugunov.pro/api-wordpress/functions/_deprecated_argument/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`wp_generate_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_generate_attachment_metadata/), `wp_xmlrpc_server::mw_newMediaObject`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_upload_bits/
