diff --git a/packages/block-editor/src/components/provider/index.js b/packages/block-editor/src/components/provider/index.js index 379aad102606a9..43e7d673ebe1b9 100644 --- a/packages/block-editor/src/components/provider/index.js +++ b/packages/block-editor/src/components/provider/index.js @@ -313,9 +313,16 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider( : heicMediaUpload; const interceptor = uploadFn.bind( null, registry, _settings ); interceptor.__isMediaUploadInterceptor = true; + // Preserve the original server-side function. If _settings already + // has __unstableMediaUploadServer (from a parent provider), reuse it; + // otherwise use _settings.mediaUpload (the real function at root level). + const serverMediaUpload = + _settings.__unstableMediaUploadServer || + _settings.mediaUpload; return { ..._settings, mediaUpload: interceptor, + __unstableMediaUploadServer: serverMediaUpload, }; } return _settings; diff --git a/packages/block-editor/src/components/provider/use-media-upload-settings.js b/packages/block-editor/src/components/provider/use-media-upload-settings.js index b92ed33b7e0cea..aac39559eec4d1 100644 --- a/packages/block-editor/src/components/provider/use-media-upload-settings.js +++ b/packages/block-editor/src/components/provider/use-media-upload-settings.js @@ -13,7 +13,8 @@ import { useMemo } from '@wordpress/element'; function useMediaUploadSettings( settings = {} ) { return useMemo( () => ( { - mediaUpload: settings.mediaUpload, + mediaUpload: + settings.__unstableMediaUploadServer || settings.mediaUpload, mediaSideload: settings.mediaSideload, mediaFinalize: settings.mediaFinalize, maxUploadFileSize: settings.maxUploadFileSize,