私はメインサイト(mysite.com)を通してアップロードされたすべての画像がsub1.mysite.com
とsub2.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' );
これにより、すべてのサイトの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' );