J'ai un wordpress multisite, où je voudrais que toutes les images téléchargées via le site principal (mysite.com) soient accessibles à sub1.mysite.com
et sub2.mysite.com
. Toutes les images doivent figurer dans un dossier sans sous-répertoire (par exemple: wp-content/uploads/image.jpg
). J'ai essayé la fonction ci-dessous, mais mes images pour les sous-domaines sont téléchargées sur 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' );
Cela forcera les téléchargements de tous les sites dans le répertoire wp-content/uploads
. Les sous-répertoires (tels que year/month
) existeront toujours (si le paramètre est activé).
/**
* 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' );