If you’re working with WordPress Multisite, you might encounter a scenario where you want all uploaded media to share the same folder. In my case, I needed all sites to use the same uploads directory as the parent site.
As with most things in WordPress, there is some hook or filter you can use to change core WordPress functionality. For the upload directory, there is a filter called upload_dir
which is called when the upload directory is configured.
add_filter( 'upload_dir', function ($dirs) { if ( is_multisite() ) { $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; }, 999 );
WARNING: While this will give you a shared uploads directory, it will have a severe side effect. If you delete one of your WordPress Multisites, it will delete all of the media in your custom upload path as well. This is because WordPress will clean up after itself and see your upload path as a custom one.