web-dev-qa-db-fra.com

Dossier de téléchargement partagé dans WordPress multisite

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' );
3
Totem

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' );
7
TheDeadMedic