I have a wordpress multisite, where I would like all the images uploaded through the main site (mysite.com) to be accessible to sub1.mysite.com and sub2.mysite.com. All the images should be in one folder without subdirectory (e.g: wp-content/uploads/image.jpg). I tried the bellow function, but my images for subdomains are uploaded to wp-content/uploads/sites/#blog_id/

function wpse_16722_upload_dir( $args ) {
    $newdir = '/';

    $args['path']    = str_replace( $args['subdir'], '', $args['path'] ); //remove default subdir
    $args['url']     = str_replace( $args['subdir'], '', $args['url'] );      
    $args['subdir']  = $newdir;
    $args['path']   .= $newdir; 
    $args['url']    .= $newdir; 

    return $args;
add_filter( 'upload_dir', 'wpse_16722_upload_dir' );
  • In MultiSite, wp_upload_dir appends the site-specific sub-directory directly on the path argument. subdir will be empty (or the year/month), so str_replace'ing it will have no effect. Do you want all uploads in the root folder, or just for the main site? – TheDeadMedic Jun 6 '14 at 8:50
  • Thanks TheDeadMedic. Yes I want all uploads in one folder. – Totem Jun 6 '14 at 21:42

This will force uploads for all sites to the wp-content/uploads directory. Sub-directories (like year/month) will still exist (if the setting is enabled).

 * Force all network uploads to reside in "wp-content/uploads", and by-pass
 * "files" URL rewrite for site-specific directories.
 * @link    http://wordpress.stackexchange.com/q/147750/1685
 * @param   array   $dirs
 * @return  array
function wpse_147750_upload_dir( $dirs ) {
    $dirs['baseurl'] = network_site_url( '/wp-content/uploads' );
    $dirs['basedir'] = ABSPATH . 'wp-content/uploads';
    $dirs['path'] = $dirs['basedir'] . $dirs['subdir'];
    $dirs['url'] = $dirs['baseurl'] . $dirs['subdir'];

    return $dirs;

add_filter( 'upload_dir', 'wpse_147750_upload_dir' );
  • Hi, just wondering where this code should go? If it's in the functions.php file, should it be the main site's functions.php? – fortuneRice Sep 17 '16 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.