diff --git a/packages/edit-post/src/components/sidebar/settings-sidebar/index.js b/packages/edit-post/src/components/sidebar/settings-sidebar/index.js
index 465088b39bf80f..76d1f1b63ad636 100644
--- a/packages/edit-post/src/components/sidebar/settings-sidebar/index.js
+++ b/packages/edit-post/src/components/sidebar/settings-sidebar/index.js
@@ -13,6 +13,7 @@ import { store as interfaceStore } from '@wordpress/interface';
import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
import {
store as editorStore,
+ PostExcerptPanel,
PostFeaturedImagePanel,
PostLastRevisionPanel,
PostTaxonomiesPanel,
@@ -23,7 +24,6 @@ import {
*/
import SettingsHeader from '../settings-header';
import PostStatus from '../post-status';
-import PostExcerpt from '../post-excerpt';
import DiscussionPanel from '../discussion-panel';
import PageAttributes from '../page-attributes';
import MetaBoxes from '../../meta-boxes';
@@ -84,7 +84,7 @@ const SidebarContent = ( {
-
+
diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js
index ce30f3a26c1c2d..ffe55e50efab08 100644
--- a/packages/edit-post/src/index.js
+++ b/packages/edit-post/src/index.js
@@ -15,7 +15,10 @@ import {
registerLegacyWidgetBlock,
registerWidgetGroupBlock,
} from '@wordpress/widgets';
-import { store as editorStore } from '@wordpress/editor';
+import {
+ privateApis as editorPrivateApis,
+ store as editorStore,
+} from '@wordpress/editor';
/**
* Internal dependencies
@@ -24,6 +27,10 @@ import './hooks';
import './plugins';
import Editor from './editor';
import { store as editPostStore } from './store';
+import { unlock } from './lock-unlock';
+
+const { PluginPostExcerpt: __experimentalPluginPostExcerpt } =
+ unlock( editorPrivateApis );
/**
* Initializes and returns an instance of Editor.
@@ -208,5 +215,5 @@ export { default as PluginSidebar } from './components/sidebar/plugin-sidebar';
export { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item';
export { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close';
export { default as __experimentalMainDashboardButton } from './components/header/main-dashboard-button';
-export { default as __experimentalPluginPostExcerpt } from './components/sidebar/plugin-post-excerpt';
+export { __experimentalPluginPostExcerpt };
export { store } from './store';
diff --git a/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js b/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js
index f6c84d8cfd3adc..e350225a1212aa 100644
--- a/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js
+++ b/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js
@@ -13,6 +13,7 @@ import { useSelect } from '@wordpress/data';
import { store as coreStore } from '@wordpress/core-data';
import { decodeEntities } from '@wordpress/html-entities';
import {
+ PostExcerptPanel,
PostFeaturedImagePanel,
PostLastRevisionPanel,
PostTaxonomiesPanel,
@@ -102,6 +103,7 @@ export default function PagePanels() {
+
>
);
}
diff --git a/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js b/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js
index 66b5991872cf96..157a56b2461712 100644
--- a/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js
+++ b/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js
@@ -4,6 +4,7 @@
import { useSelect } from '@wordpress/data';
import { PanelBody } from '@wordpress/components';
import {
+ PostExcerptPanel,
PostFeaturedImagePanel,
PostLastRevisionPanel,
PostTaxonomiesPanel,
@@ -66,6 +67,7 @@ export default function TemplatePanel() {
+
>
);
}
diff --git a/packages/editor/src/components/index.js b/packages/editor/src/components/index.js
index 79a4d90663f669..0ae7ac0824a7fd 100644
--- a/packages/editor/src/components/index.js
+++ b/packages/editor/src/components/index.js
@@ -32,6 +32,7 @@ export { default as PostAuthorPanel } from './post-author/panel';
export { default as PostComments } from './post-comments';
export { default as PostExcerpt } from './post-excerpt';
export { default as PostExcerptCheck } from './post-excerpt/check';
+export { default as PostExcerptPanel } from './post-excerpt/panel';
export { default as PostFeaturedImage } from './post-featured-image';
export { default as PostFeaturedImageCheck } from './post-featured-image/check';
export { default as PostFeaturedImagePanel } from './post-featured-image/panel';
diff --git a/packages/editor/src/components/post-excerpt/check.js b/packages/editor/src/components/post-excerpt/check.js
index 7d77ba77cd029a..f8ff4bb5d37dab 100644
--- a/packages/editor/src/components/post-excerpt/check.js
+++ b/packages/editor/src/components/post-excerpt/check.js
@@ -1,9 +1,27 @@
+/**
+ * WordPress dependencies
+ */
+import { useSelect } from '@wordpress/data';
+
/**
* Internal dependencies
*/
import PostTypeSupportCheck from '../post-type-support-check';
+import { store as editorStore } from '../../store';
function PostExcerptCheck( { children } ) {
+ const postType = useSelect( ( select ) => {
+ const { getEditedPostAttribute } = select( editorStore );
+ return getEditedPostAttribute( 'type' );
+ }, [] );
+
+ // This special case is unfortunate, but the REST API of wp_template and wp_template_part
+ // support the excerpt field throught the "description" field rather than "excerpt" which means
+ // the default ExcerptPanel won't work for these.
+ if ( [ 'wp_template', 'wp_template_part' ].includes( postType ) ) {
+ return null;
+ }
+
return (
{ children }
diff --git a/packages/edit-post/src/components/sidebar/post-excerpt/index.js b/packages/editor/src/components/post-excerpt/panel.js
similarity index 83%
rename from packages/edit-post/src/components/sidebar/post-excerpt/index.js
rename to packages/editor/src/components/post-excerpt/panel.js
index 8063ed6017b08c..ab4b60611493cc 100644
--- a/packages/edit-post/src/components/sidebar/post-excerpt/index.js
+++ b/packages/editor/src/components/post-excerpt/panel.js
@@ -3,24 +3,22 @@
*/
import { __ } from '@wordpress/i18n';
import { PanelBody } from '@wordpress/components';
-import {
- PostExcerpt as PostExcerptForm,
- PostExcerptCheck,
- store as editorStore,
-} from '@wordpress/editor';
import { useDispatch, useSelect } from '@wordpress/data';
/**
* Internal dependencies
*/
-import PluginPostExcerpt from '../plugin-post-excerpt';
+import PostExcerptForm from './index';
+import PostExcerptCheck from './check';
+import PluginPostExcerpt from './plugin';
+import { store as editorStore } from '../../store';
/**
* Module Constants
*/
const PANEL_NAME = 'post-excerpt';
-export default function PostExcerpt() {
+export default function PostExcerptPanel() {
const { isOpened, isEnabled } = useSelect( ( select ) => {
const { isEditorPanelOpened, isEditorPanelEnabled } =
select( editorStore );
diff --git a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/index.js b/packages/editor/src/components/post-excerpt/plugin.js
similarity index 100%
rename from packages/edit-post/src/components/sidebar/plugin-post-excerpt/index.js
rename to packages/editor/src/components/post-excerpt/plugin.js
diff --git a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js b/packages/editor/src/components/post-excerpt/test/plugin.js
similarity index 94%
rename from packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js
rename to packages/editor/src/components/post-excerpt/test/plugin.js
index 4b81a1326d5176..d6f81d459deb33 100644
--- a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js
+++ b/packages/editor/src/components/post-excerpt/test/plugin.js
@@ -11,7 +11,7 @@ import { SlotFillProvider } from '@wordpress/components';
/**
* Internal dependencies
*/
-import PluginPostExcerptPanel from '../';
+import PluginPostExcerptPanel from '../plugin';
describe( 'PluginPostExcerptPanel', () => {
test( 'renders fill properly', () => {
diff --git a/packages/editor/src/private-apis.js b/packages/editor/src/private-apis.js
index ac5bd4324946ee..da86d138bb2fd8 100644
--- a/packages/editor/src/private-apis.js
+++ b/packages/editor/src/private-apis.js
@@ -8,6 +8,7 @@ import { EntitiesSavedStatesExtensible } from './components/entities-saved-state
import useBlockEditorSettings from './components/provider/use-block-editor-settings';
import PostPanelRow from './components/post-panel-row';
import PreviewDropdown from './components/preview-dropdown';
+import PluginPostExcerpt from './components/post-excerpt/plugin';
export const privateApis = {};
lock( privateApis, {
@@ -16,6 +17,7 @@ lock( privateApis, {
EntitiesSavedStatesExtensible,
PostPanelRow,
PreviewDropdown,
+ PluginPostExcerpt,
// This is a temporary private API while we're updating the site editor to use EditorProvider.
useBlockEditorSettings,