web-dev-qa-db-ja.com

ワードプレスマルチサイトの共有アップグレードフォルダ

私はメインサイト(mysite.com)を通してアップロードされたすべての画像がsub1.mysite.comsub2.mysite.comにアクセスできるようにしたいというワードプレスマルチサイトを持っています。すべての画像はサブディレクトリのない1つのフォルダになければなりません(例:wp-content/uploads/image.jpg)。以下の機能を試してみましたが、サブドメイン用の画像は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

これにより、すべてのサイトのwp-content/uploadsディレクトリへのアップロードが強制されます。 (year/monthのような)サブディレクトリはまだ存在します(設定が有効になっている場合)。

/**
 * 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