禁用 WordPress 多站点修改媒体 URL

Disable WordPress Multisite Modifying Media URL

我正在使用 DigitalOcean Spaces 来存储我的静态资产。一切正常,我的媒体库 url 指向我的空间(例如 foobar.sgp1.digitaloceanspaces.com)。

当我安装多站点时问题就开始了,因为 WordPress 的默认行为是将 "sites/xxx" 添加到所有子站点的媒体 url(例如 foobar.sgp1.digitaloceanspaces.com/sites/2 ).当然,我的资产不在那里,也找不到。

我找到了这个 link:

https://wordpress.stackexchange.com/questions/307530/remove-multisite-part-from-wordpress-multisite-upload-directory

这给了我一个主意。

我已经在 functions.php

上试过了
add_filter('upload_dir', 'multisite_path');

function multisite_path( $param ){
    $path = str_replace('sites/2/', '', $param['path']);
    $url = str_replace('sites/2/', '', $param['url']);
    $param['path'] = $path;
    $param['url'] = $url;

    return $param;
}

但是没用。

如果有从 url 中删除 "sites/2/" 的钩子,或任何其他禁用此功能的方法,我愿意征求建议。

谢谢。

在此处找到解决方案:

wordpress multisite remove /sites/{ID}/ automatic upload url

这是工作代码:

add_filter( 'upload_dir', 'same_upload_dir' );
function same_upload_dir( array $uploads ) {
    $baseurl = WP_CONTENT_URL . '/uploads';
    $basedir = ABSPATH . 'wp-content/uploads';
    $subdir = $uploads['subdir'];

    return array(
        'path'    => $basedir . $subdir,
        'url'     => $baseurl . $subdir,
        'subdir'  => $subdir,
        'basedir' => $basedir,
        'baseurl' => $baseurl,
        'error'   => false,
    );
}