wppaste
WordPress

_wp_upload_dir( string|null $time = null ): array

Since
4.5.0
Source
wp-includes/functions.php:2467
A non-filtered, non-cached version of wp_upload_dir() that doesn't check the path.

Parameters

$timestring|nulloptional
Time formatted in 'yyyy/mm'. Default null.Default: null

Return

array
See wp_upload_dir()

Uses · 12

Used by · 1

  • wp_upload_dir()Returns an array containing the current upload directory's path and URL.

Source

function _wp_upload_dir( $time = null ) {	$siteurl     = get_option( 'siteurl' );	$upload_path = trim( get_option( 'upload_path' ) ); 	if ( empty( $upload_path ) || 'wp-content/uploads' === $upload_path ) {		$dir = WP_CONTENT_DIR . '/uploads';	} elseif ( ! str_starts_with( $upload_path, ABSPATH ) ) {		// $dir is absolute, $upload_path is (maybe) relative to ABSPATH.		$dir = path_join( ABSPATH, $upload_path );	} else {		$dir = $upload_path;	} 	$url = get_option( 'upload_url_path' );	if ( ! $url ) {		if ( empty( $upload_path ) || ( 'wp-content/uploads' === $upload_path ) || ( $upload_path === $dir ) ) {			$url = WP_CONTENT_URL . '/uploads';		} else {			$url = trailingslashit( $siteurl ) . $upload_path;		}	} 	/*	 * Honor the value of UPLOADS. This happens as long as ms-files rewriting is disabled.	 * We also sometimes obey UPLOADS when rewriting is enabled -- see the next block.	 */	if ( defined( 'UPLOADS' ) && ! ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) ) {		$dir = ABSPATH . UPLOADS;		$url = trailingslashit( $siteurl ) . UPLOADS;	} 	// If multisite (and if not the main site in a post-MU network).	if ( is_multisite() && ! ( is_main_network() && is_main_site() && defined( 'MULTISITE' ) ) ) { 		if ( ! get_site_option( 'ms_files_rewriting' ) ) {			/*			 * If ms-files rewriting is disabled (networks created post-3.5), it is fairly			 * straightforward: Append sites/%d if we're not on the main site (for post-MU			 * networks). (The extra directory prevents a four-digit ID from conflicting with			 * a year-based directory for the main site. But if a MU-era network has disabled			 * ms-files rewriting manually, they don't need the extra directory, as they never			 * had wp-content/uploads for the main site.)			 */ 			if ( defined( 'MULTISITE' ) ) {				$ms_dir = '/sites/' . get_current_blog_id();			} else {				$ms_dir = '/' . get_current_blog_id();			} 			$dir .= $ms_dir;			$url .= $ms_dir; 		} elseif ( defined( 'UPLOADS' ) && ! ms_is_switched() ) {			/*			 * Handle the old-form ms-files.php rewriting if the network still has that enabled.			 * When ms-files rewriting is enabled, then we only listen to UPLOADS when:			 * 1) We are not on the main site in a post-MU network, as wp-content/uploads is used			 *    there, and			 * 2) We are not switched, as ms_upload_constants() hardcodes these constants to reflect			 *    the original blog ID.			 *			 * Rather than UPLOADS, we actually use BLOGUPLOADDIR if it is set, as it is absolute.			 * (And it will be set, see ms_upload_constants().) Otherwise, UPLOADS can be used, as			 * as it is relative to ABSPATH. For the final piece: when UPLOADS is used with ms-files			 * rewriting in multisite, the resulting URL is /files. (#WP22702 for background.)			 */ 			if ( defined( 'BLOGUPLOADDIR' ) ) {				$dir = untrailingslashit( BLOGUPLOADDIR );			} else {				$dir = ABSPATH . UPLOADS;			}			$url = trailingslashit( $siteurl ) . 'files';		}	} 	$basedir = $dir;	$baseurl = $url;

History

Introduced in 4.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/functions.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.