Skip to content

ContentOnly: For template parts and synced patterns, ensure 'Edit section' button goes to the isolated editor#73736

Merged
andrewserong merged 10 commits intotrunkfrom
try/edit-section-button-to-go-to-isolated-editor-for-template-parts-and-synced-blocks
Dec 11, 2025
Merged

ContentOnly: For template parts and synced patterns, ensure 'Edit section' button goes to the isolated editor#73736
andrewserong merged 10 commits intotrunkfrom
try/edit-section-button-to-go-to-isolated-editor-for-template-parts-and-synced-blocks

Conversation

@andrewserong
Copy link
Copy Markdown
Contributor

@andrewserong andrewserong commented Dec 4, 2025

What?

Part of:

Update the Edit Section button to be aware of whether a block is a synced pattern or template part. If so, clicking the button will redirect to the isolated editor.

Why?

As discussed in #73677 this ensures that items edited in situ (unsynced patterns) are clearly edited within their context, and symbols (template parts, synced patterns) are edited in their own location. This better indicates the scope of changes someone might make (i.e. am I just changing this part of one page, or all instances of this thing)

A caveat / question ❓ A decision

Note that this PR currently means that the controls for changing the template part design are no longer available. What could or should we do about that? I.e. before this PR, when we clicked the Edit Section button, we could access these:

image

Update: see the comment in #73736 (comment) — I've gone for a kind of hybrid where we show the content buttons and the Design and Advanced panels so that we prioritise the content only experience while also allowing local edits for template parts. I think this might give us a compromise between the behaviours.

How?

  • Add checks for whether the block is a template part or synced pattern
  • Update the Edit Section buttons to take users to the isolated editor or engage the editing content only section mode
  • Update the logic that determines whether unsynced blocks are treated as contentOnly / sections so that it only does that if we're not in an isolated editor. This ensures that if someone goes directly to edit template parts or patterns, that they're not locked out of making changes. It also means that when someone goes to the isolated editor from a template, they're immediately able to edit in greater detail, without getting stuck. See the comments below for more context on this.

Testing Instructions

  • Enable the content only insertion experiment in Gutenberg experiment settings
  • Ensure you've got at least one synced pattern in your site
  • In the site editor, play around with Edit Section on a template part, on a synced pattern, and on an unsynced pattern
  • For template parts and synced patterns, the button should take you to the isolated editor
  • Check that when in this editor, if you're editing a template part that contains patterns (especially true in themes like TT4) that the contentOnly mode does not occur in the isolated editor
  • On unsynced patterns it should enable the spotlighted editing mode

Screenshots or screencast

edit-section-button.mp4

@andrewserong andrewserong self-assigned this Dec 4, 2025
@andrewserong andrewserong added [Type] Enhancement A suggestion for improvement. [Feature] Synced Patterns Related to synced patterns (formerly reusable blocks) [Feature] Patterns A collection of blocks that can be synced (previously reusable blocks) or unsynced labels Dec 4, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 4, 2025

Size Change: +527 B (+0.02%)

Total Size: 2.57 MB

Filename Size Change
build/scripts/block-editor/index.min.js 315 kB +568 B (+0.18%)
build/scripts/block-library/index.min.js 276 kB -93 B (-0.03%)
build/scripts/editor/index.min.js 284 kB +52 B (+0.02%)
ℹ️ View Unchanged
Filename Size
build/modules/a11y/index.min.js 355 B
build/modules/abilities/index.min.js 42.3 kB
build/modules/block-editor/utils/fit-text-frontend.min.js 549 B
build/modules/block-library/accordion/view.min.js 779 B
build/modules/block-library/file/view.min.js 346 B
build/modules/block-library/form/view.min.js 528 B
build/modules/block-library/image/view.min.js 1.95 kB
build/modules/block-library/navigation/view.min.js 1.03 kB
build/modules/block-library/query/view.min.js 518 B
build/modules/block-library/search/view.min.js 498 B
build/modules/block-library/tabs/view.min.js 859 B
build/modules/boot/index.min.js 103 kB
build/modules/core-abilities/index.min.js 890 B
build/modules/edit-site-init/index.min.js 2.14 kB
build/modules/interactivity-router/full-page.min.js 451 B
build/modules/interactivity-router/index.min.js 11.5 kB
build/modules/interactivity/index.min.js 14.9 kB
build/modules/latex-to-mathml/index.min.js 56.5 kB
build/modules/latex-to-mathml/loader.min.js 131 B
build/modules/lazy-editor/index.min.js 18.8 kB
build/modules/route/index.min.js 24.6 kB
build/modules/workflow/index.min.js 36.8 kB
build/scripts/a11y/index.min.js 1.06 kB
build/scripts/annotations/index.min.js 2.38 kB
build/scripts/api-fetch/index.min.js 2.83 kB
build/scripts/autop/index.min.js 2.18 kB
build/scripts/blob/index.min.js 631 B
build/scripts/block-directory/index.min.js 8.03 kB
build/scripts/block-serialization-default-parser/index.min.js 1.16 kB
build/scripts/block-serialization-spec-parser/index.min.js 3.08 kB
build/scripts/blocks/index.min.js 56.4 kB
build/scripts/commands/index.min.js 19.9 kB
build/scripts/components/index.min.js 273 kB
build/scripts/compose/index.min.js 13.9 kB
build/scripts/core-commands/index.min.js 4.13 kB
build/scripts/core-data/index.min.js 86.7 kB
build/scripts/customize-widgets/index.min.js 12.3 kB
build/scripts/data-controls/index.min.js 793 B
build/scripts/data/index.min.js 9.62 kB
build/scripts/date/index.min.js 23.6 kB
build/scripts/deprecated/index.min.js 752 B
build/scripts/dom-ready/index.min.js 476 B
build/scripts/dom/index.min.js 4.91 kB
build/scripts/edit-post/index.min.js 16.3 kB
build/scripts/edit-site/index.min.js 234 kB
build/scripts/edit-widgets/index.min.js 20 kB
build/scripts/element/index.min.js 5.19 kB
build/scripts/escape-html/index.min.js 586 B
build/scripts/format-library/index.min.js 10.8 kB
build/scripts/hooks/index.min.js 1.83 kB
build/scripts/html-entities/index.min.js 494 B
build/scripts/i18n/index.min.js 2.46 kB
build/scripts/is-shallow-equal/index.min.js 568 B
build/scripts/keyboard-shortcuts/index.min.js 1.57 kB
build/scripts/keycodes/index.min.js 1.53 kB
build/scripts/list-reusable-blocks/index.min.js 2.44 kB
build/scripts/media-utils/index.min.js 69.5 kB
build/scripts/notices/index.min.js 1.11 kB
build/scripts/nux/index.min.js 1.88 kB
build/scripts/patterns/index.min.js 7.87 kB
build/scripts/plugins/index.min.js 2.14 kB
build/scripts/preferences-persistence/index.min.js 2.15 kB
build/scripts/preferences/index.min.js 3.31 kB
build/scripts/primitives/index.min.js 1.01 kB
build/scripts/priority-queue/index.min.js 1.61 kB
build/scripts/private-apis/index.min.js 1.07 kB
build/scripts/react-i18n/index.min.js 832 B
build/scripts/react-refresh-entry/index.min.js 9.44 kB
build/scripts/react-refresh-runtime/index.min.js 3.59 kB
build/scripts/redux-routine/index.min.js 3.36 kB
build/scripts/reusable-blocks/index.min.js 2.93 kB
build/scripts/rich-text/index.min.js 12.9 kB
build/scripts/router/index.min.js 5.96 kB
build/scripts/server-side-render/index.min.js 1.91 kB
build/scripts/shortcode/index.min.js 1.58 kB
build/scripts/style-engine/index.min.js 2.33 kB
build/scripts/theme/index.min.js 20.8 kB
build/scripts/token-list/index.min.js 739 B
build/scripts/undo-manager/index.min.js 917 B
build/scripts/url/index.min.js 3.98 kB
build/scripts/vendors/react-dom.min.js 43 kB
build/scripts/vendors/react-jsx-runtime.min.js 691 B
build/scripts/vendors/react.min.js 4.27 kB
build/scripts/viewport/index.min.js 1.22 kB
build/scripts/warning/index.min.js 454 B
build/scripts/widgets/index.min.js 7.81 kB
build/scripts/wordcount/index.min.js 1.04 kB
build/styles/block-directory/style-rtl.css 1.05 kB
build/styles/block-directory/style.css 1.05 kB
build/styles/block-editor/content-rtl.css 4.8 kB
build/styles/block-editor/content.css 4.79 kB
build/styles/block-editor/default-editor-styles-rtl.css 224 B
build/styles/block-editor/default-editor-styles.css 224 B
build/styles/block-editor/style-rtl.css 16.4 kB
build/styles/block-editor/style.css 16.4 kB
build/styles/block-library/accordion-heading/style-rtl.css 325 B
build/styles/block-library/accordion-heading/style.css 325 B
build/styles/block-library/accordion-item/style-rtl.css 180 B
build/styles/block-library/accordion-item/style.css 180 B
build/styles/block-library/accordion-panel/style-rtl.css 99 B
build/styles/block-library/accordion-panel/style.css 99 B
build/styles/block-library/accordion/style-rtl.css 62 B
build/styles/block-library/accordion/style.css 62 B
build/styles/block-library/archives/editor-rtl.css 61 B
build/styles/block-library/archives/editor.css 61 B
build/styles/block-library/archives/style-rtl.css 90 B
build/styles/block-library/archives/style.css 90 B
build/styles/block-library/audio/editor-rtl.css 149 B
build/styles/block-library/audio/editor.css 151 B
build/styles/block-library/audio/style-rtl.css 132 B
build/styles/block-library/audio/style.css 132 B
build/styles/block-library/audio/theme-rtl.css 134 B
build/styles/block-library/audio/theme.css 134 B
build/styles/block-library/avatar/editor-rtl.css 115 B
build/styles/block-library/avatar/editor.css 115 B
build/styles/block-library/avatar/style-rtl.css 104 B
build/styles/block-library/avatar/style.css 104 B
build/styles/block-library/breadcrumbs/style-rtl.css 203 B
build/styles/block-library/breadcrumbs/style.css 203 B
build/styles/block-library/button/editor-rtl.css 265 B
build/styles/block-library/button/editor.css 265 B
build/styles/block-library/button/style-rtl.css 554 B
build/styles/block-library/button/style.css 554 B
build/styles/block-library/buttons/editor-rtl.css 291 B
build/styles/block-library/buttons/editor.css 291 B
build/styles/block-library/buttons/style-rtl.css 349 B
build/styles/block-library/buttons/style.css 349 B
build/styles/block-library/calendar/style-rtl.css 239 B
build/styles/block-library/calendar/style.css 239 B
build/styles/block-library/categories/editor-rtl.css 132 B
build/styles/block-library/categories/editor.css 131 B
build/styles/block-library/categories/style-rtl.css 152 B
build/styles/block-library/categories/style.css 152 B
build/styles/block-library/classic-rtl.css 321 B
build/styles/block-library/classic.css 321 B
build/styles/block-library/code/editor-rtl.css 53 B
build/styles/block-library/code/editor.css 53 B
build/styles/block-library/code/style-rtl.css 139 B
build/styles/block-library/code/style.css 139 B
build/styles/block-library/code/theme-rtl.css 122 B
build/styles/block-library/code/theme.css 122 B
build/styles/block-library/columns/editor-rtl.css 108 B
build/styles/block-library/columns/editor.css 108 B
build/styles/block-library/columns/style-rtl.css 421 B
build/styles/block-library/columns/style.css 421 B
build/styles/block-library/comment-author-avatar/editor-rtl.css 124 B
build/styles/block-library/comment-author-avatar/editor.css 124 B
build/styles/block-library/comment-author-name/style-rtl.css 72 B
build/styles/block-library/comment-author-name/style.css 72 B
build/styles/block-library/comment-content/style-rtl.css 120 B
build/styles/block-library/comment-content/style.css 120 B
build/styles/block-library/comment-date/style-rtl.css 65 B
build/styles/block-library/comment-date/style.css 65 B
build/styles/block-library/comment-edit-link/style-rtl.css 70 B
build/styles/block-library/comment-edit-link/style.css 70 B
build/styles/block-library/comment-reply-link/style-rtl.css 71 B
build/styles/block-library/comment-reply-link/style.css 71 B
build/styles/block-library/comment-template/style-rtl.css 191 B
build/styles/block-library/comment-template/style.css 191 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.css 122 B
build/styles/block-library/comments-pagination-numbers/editor.css 121 B
build/styles/block-library/comments-pagination/editor-rtl.css 168 B
build/styles/block-library/comments-pagination/editor.css 168 B
build/styles/block-library/comments-pagination/style-rtl.css 201 B
build/styles/block-library/comments-pagination/style.css 201 B
build/styles/block-library/comments-title/editor-rtl.css 75 B
build/styles/block-library/comments-title/editor.css 75 B
build/styles/block-library/comments/editor-rtl.css 842 B
build/styles/block-library/comments/editor.css 842 B
build/styles/block-library/comments/style-rtl.css 637 B
build/styles/block-library/comments/style.css 637 B
build/styles/block-library/common-rtl.css 1.11 kB
build/styles/block-library/common.css 1.11 kB
build/styles/block-library/cover/editor-rtl.css 631 B
build/styles/block-library/cover/editor.css 631 B
build/styles/block-library/cover/style-rtl.css 1.82 kB
build/styles/block-library/cover/style.css 1.81 kB
build/styles/block-library/details/editor-rtl.css 65 B
build/styles/block-library/details/editor.css 65 B
build/styles/block-library/details/style-rtl.css 86 B
build/styles/block-library/details/style.css 86 B
build/styles/block-library/editor-elements-rtl.css 75 B
build/styles/block-library/editor-elements.css 75 B
build/styles/block-library/editor-rtl.css 11.8 kB
build/styles/block-library/editor.css 11.8 kB
build/styles/block-library/elements-rtl.css 54 B
build/styles/block-library/elements.css 54 B
build/styles/block-library/embed/editor-rtl.css 331 B
build/styles/block-library/embed/editor.css 331 B
build/styles/block-library/embed/style-rtl.css 448 B
build/styles/block-library/embed/style.css 448 B
build/styles/block-library/embed/theme-rtl.css 133 B
build/styles/block-library/embed/theme.css 133 B
build/styles/block-library/file/editor-rtl.css 324 B
build/styles/block-library/file/editor.css 324 B
build/styles/block-library/file/style-rtl.css 278 B
build/styles/block-library/file/style.css 278 B
build/styles/block-library/footnotes/style-rtl.css 198 B
build/styles/block-library/footnotes/style.css 197 B
build/styles/block-library/form-input/editor-rtl.css 229 B
build/styles/block-library/form-input/editor.css 229 B
build/styles/block-library/form-input/style-rtl.css 366 B
build/styles/block-library/form-input/style.css 366 B
build/styles/block-library/form-submission-notification/editor-rtl.css 344 B
build/styles/block-library/form-submission-notification/editor.css 341 B
build/styles/block-library/form-submit-button/style-rtl.css 69 B
build/styles/block-library/form-submit-button/style.css 69 B
build/styles/block-library/freeform/editor-rtl.css 2.59 kB
build/styles/block-library/freeform/editor.css 2.59 kB
build/styles/block-library/gallery/editor-rtl.css 615 B
build/styles/block-library/gallery/editor.css 616 B
build/styles/block-library/gallery/style-rtl.css 1.84 kB
build/styles/block-library/gallery/style.css 1.84 kB
build/styles/block-library/gallery/theme-rtl.css 108 B
build/styles/block-library/gallery/theme.css 108 B
build/styles/block-library/group/editor-rtl.css 335 B
build/styles/block-library/group/editor.css 335 B
build/styles/block-library/group/style-rtl.css 103 B
build/styles/block-library/group/style.css 103 B
build/styles/block-library/group/theme-rtl.css 79 B
build/styles/block-library/group/theme.css 79 B
build/styles/block-library/heading/style-rtl.css 205 B
build/styles/block-library/heading/style.css 205 B
build/styles/block-library/html/editor-rtl.css 419 B
build/styles/block-library/html/editor.css 419 B
build/styles/block-library/image/editor-rtl.css 763 B
build/styles/block-library/image/editor.css 763 B
build/styles/block-library/image/style-rtl.css 1.6 kB
build/styles/block-library/image/style.css 1.59 kB
build/styles/block-library/image/theme-rtl.css 137 B
build/styles/block-library/image/theme.css 137 B
build/styles/block-library/latest-comments/style-rtl.css 355 B
build/styles/block-library/latest-comments/style.css 354 B
build/styles/block-library/latest-posts/editor-rtl.css 139 B
build/styles/block-library/latest-posts/editor.css 138 B
build/styles/block-library/latest-posts/style-rtl.css 520 B
build/styles/block-library/latest-posts/style.css 520 B
build/styles/block-library/list/style-rtl.css 107 B
build/styles/block-library/list/style.css 107 B
build/styles/block-library/loginout/style-rtl.css 61 B
build/styles/block-library/loginout/style.css 61 B
build/styles/block-library/math/editor-rtl.css 105 B
build/styles/block-library/math/editor.css 105 B
build/styles/block-library/math/style-rtl.css 61 B
build/styles/block-library/math/style.css 61 B
build/styles/block-library/media-text/editor-rtl.css 321 B
build/styles/block-library/media-text/editor.css 320 B
build/styles/block-library/media-text/style-rtl.css 543 B
build/styles/block-library/media-text/style.css 542 B
build/styles/block-library/more/editor-rtl.css 393 B
build/styles/block-library/more/editor.css 393 B
build/styles/block-library/navigation-link/editor-rtl.css 645 B
build/styles/block-library/navigation-link/editor.css 647 B
build/styles/block-library/navigation-link/style-rtl.css 190 B
build/styles/block-library/navigation-link/style.css 188 B
build/styles/block-library/navigation-submenu/editor-rtl.css 295 B
build/styles/block-library/navigation-submenu/editor.css 294 B
build/styles/block-library/navigation/editor-rtl.css 2.24 kB
build/styles/block-library/navigation/editor.css 2.24 kB
build/styles/block-library/navigation/style-rtl.css 2.27 kB
build/styles/block-library/navigation/style.css 2.25 kB
build/styles/block-library/nextpage/editor-rtl.css 392 B
build/styles/block-library/nextpage/editor.css 392 B
build/styles/block-library/page-list/editor-rtl.css 356 B
build/styles/block-library/page-list/editor.css 356 B
build/styles/block-library/page-list/style-rtl.css 192 B
build/styles/block-library/page-list/style.css 192 B
build/styles/block-library/paragraph/editor-rtl.css 251 B
build/styles/block-library/paragraph/editor.css 251 B
build/styles/block-library/paragraph/style-rtl.css 341 B
build/styles/block-library/paragraph/style.css 340 B
build/styles/block-library/post-author-biography/style-rtl.css 74 B
build/styles/block-library/post-author-biography/style.css 74 B
build/styles/block-library/post-author-name/style-rtl.css 69 B
build/styles/block-library/post-author-name/style.css 69 B
build/styles/block-library/post-author/style-rtl.css 188 B
build/styles/block-library/post-author/style.css 189 B
build/styles/block-library/post-comments-count/style-rtl.css 72 B
build/styles/block-library/post-comments-count/style.css 72 B
build/styles/block-library/post-comments-form/editor-rtl.css 96 B
build/styles/block-library/post-comments-form/editor.css 96 B
build/styles/block-library/post-comments-form/style-rtl.css 525 B
build/styles/block-library/post-comments-form/style.css 525 B
build/styles/block-library/post-comments-link/style-rtl.css 71 B
build/styles/block-library/post-comments-link/style.css 71 B
build/styles/block-library/post-content/style-rtl.css 61 B
build/styles/block-library/post-content/style.css 61 B
build/styles/block-library/post-date/style-rtl.css 62 B
build/styles/block-library/post-date/style.css 62 B
build/styles/block-library/post-excerpt/editor-rtl.css 71 B
build/styles/block-library/post-excerpt/editor.css 71 B
build/styles/block-library/post-excerpt/style-rtl.css 155 B
build/styles/block-library/post-excerpt/style.css 155 B
build/styles/block-library/post-featured-image/editor-rtl.css 719 B
build/styles/block-library/post-featured-image/editor.css 717 B
build/styles/block-library/post-featured-image/style-rtl.css 347 B
build/styles/block-library/post-featured-image/style.css 347 B
build/styles/block-library/post-navigation-link/style-rtl.css 215 B
build/styles/block-library/post-navigation-link/style.css 214 B
build/styles/block-library/post-template/style-rtl.css 414 B
build/styles/block-library/post-template/style.css 414 B
build/styles/block-library/post-terms/style-rtl.css 96 B
build/styles/block-library/post-terms/style.css 96 B
build/styles/block-library/post-time-to-read/style-rtl.css 70 B
build/styles/block-library/post-time-to-read/style.css 70 B
build/styles/block-library/post-title/style-rtl.css 162 B
build/styles/block-library/post-title/style.css 162 B
build/styles/block-library/preformatted/style-rtl.css 125 B
build/styles/block-library/preformatted/style.css 125 B
build/styles/block-library/pullquote/editor-rtl.css 133 B
build/styles/block-library/pullquote/editor.css 133 B
build/styles/block-library/pullquote/style-rtl.css 365 B
build/styles/block-library/pullquote/style.css 365 B
build/styles/block-library/pullquote/theme-rtl.css 176 B
build/styles/block-library/pullquote/theme.css 176 B
build/styles/block-library/query-pagination-numbers/editor-rtl.css 121 B
build/styles/block-library/query-pagination-numbers/editor.css 118 B
build/styles/block-library/query-pagination/editor-rtl.css 154 B
build/styles/block-library/query-pagination/editor.css 154 B
build/styles/block-library/query-pagination/style-rtl.css 237 B
build/styles/block-library/query-pagination/style.css 237 B
build/styles/block-library/query-title/style-rtl.css 64 B
build/styles/block-library/query-title/style.css 64 B
build/styles/block-library/query-total/style-rtl.css 64 B
build/styles/block-library/query-total/style.css 64 B
build/styles/block-library/query/editor-rtl.css 438 B
build/styles/block-library/query/editor.css 438 B
build/styles/block-library/quote/style-rtl.css 238 B
build/styles/block-library/quote/style.css 238 B
build/styles/block-library/quote/theme-rtl.css 233 B
build/styles/block-library/quote/theme.css 236 B
build/styles/block-library/read-more/style-rtl.css 131 B
build/styles/block-library/read-more/style.css 131 B
build/styles/block-library/reset-rtl.css 472 B
build/styles/block-library/reset.css 472 B
build/styles/block-library/rss/editor-rtl.css 126 B
build/styles/block-library/rss/editor.css 126 B
build/styles/block-library/rss/style-rtl.css 284 B
build/styles/block-library/rss/style.css 283 B
build/styles/block-library/search/editor-rtl.css 199 B
build/styles/block-library/search/editor.css 199 B
build/styles/block-library/search/style-rtl.css 665 B
build/styles/block-library/search/style.css 666 B
build/styles/block-library/search/theme-rtl.css 113 B
build/styles/block-library/search/theme.css 113 B
build/styles/block-library/separator/editor-rtl.css 100 B
build/styles/block-library/separator/editor.css 100 B
build/styles/block-library/separator/style-rtl.css 248 B
build/styles/block-library/separator/style.css 248 B
build/styles/block-library/separator/theme-rtl.css 195 B
build/styles/block-library/separator/theme.css 195 B
build/styles/block-library/shortcode/editor-rtl.css 286 B
build/styles/block-library/shortcode/editor.css 286 B
build/styles/block-library/site-logo/editor-rtl.css 773 B
build/styles/block-library/site-logo/editor.css 770 B
build/styles/block-library/site-logo/style-rtl.css 218 B
build/styles/block-library/site-logo/style.css 218 B
build/styles/block-library/site-tagline/editor-rtl.css 87 B
build/styles/block-library/site-tagline/editor.css 87 B
build/styles/block-library/site-tagline/style-rtl.css 65 B
build/styles/block-library/site-tagline/style.css 65 B
build/styles/block-library/site-title/editor-rtl.css 85 B
build/styles/block-library/site-title/editor.css 85 B
build/styles/block-library/site-title/style-rtl.css 143 B
build/styles/block-library/site-title/style.css 143 B
build/styles/block-library/social-link/editor-rtl.css 314 B
build/styles/block-library/social-link/editor.css 314 B
build/styles/block-library/social-links/editor-rtl.css 339 B
build/styles/block-library/social-links/editor.css 338 B
build/styles/block-library/social-links/style-rtl.css 1.51 kB
build/styles/block-library/social-links/style.css 1.51 kB
build/styles/block-library/spacer/editor-rtl.css 346 B
build/styles/block-library/spacer/editor.css 346 B
build/styles/block-library/spacer/style-rtl.css 48 B
build/styles/block-library/spacer/style.css 48 B
build/styles/block-library/style-rtl.css 16.5 kB
build/styles/block-library/style.css 16.5 kB
build/styles/block-library/tab/style-rtl.css 202 B
build/styles/block-library/tab/style.css 202 B
build/styles/block-library/table-of-contents/style-rtl.css 83 B
build/styles/block-library/table-of-contents/style.css 83 B
build/styles/block-library/table/editor-rtl.css 394 B
build/styles/block-library/table/editor.css 394 B
build/styles/block-library/table/style-rtl.css 641 B
build/styles/block-library/table/style.css 640 B
build/styles/block-library/table/theme-rtl.css 152 B
build/styles/block-library/table/theme.css 152 B
build/styles/block-library/tabs/editor-rtl.css 236 B
build/styles/block-library/tabs/editor.css 236 B
build/styles/block-library/tabs/style-rtl.css 983 B
build/styles/block-library/tabs/style.css 983 B
build/styles/block-library/tag-cloud/editor-rtl.css 92 B
build/styles/block-library/tag-cloud/editor.css 92 B
build/styles/block-library/tag-cloud/style-rtl.css 248 B
build/styles/block-library/tag-cloud/style.css 248 B
build/styles/block-library/template-part/editor-rtl.css 368 B
build/styles/block-library/template-part/editor.css 368 B
build/styles/block-library/template-part/theme-rtl.css 113 B
build/styles/block-library/template-part/theme.css 113 B
build/styles/block-library/term-count/style-rtl.css 63 B
build/styles/block-library/term-count/style.css 63 B
build/styles/block-library/term-description/style-rtl.css 126 B
build/styles/block-library/term-description/style.css 126 B
build/styles/block-library/term-name/style-rtl.css 62 B
build/styles/block-library/term-name/style.css 62 B
build/styles/block-library/term-template/editor-rtl.css 225 B
build/styles/block-library/term-template/editor.css 225 B
build/styles/block-library/term-template/style-rtl.css 114 B
build/styles/block-library/term-template/style.css 114 B
build/styles/block-library/text-columns/editor-rtl.css 95 B
build/styles/block-library/text-columns/editor.css 95 B
build/styles/block-library/text-columns/style-rtl.css 165 B
build/styles/block-library/text-columns/style.css 165 B
build/styles/block-library/theme-rtl.css 715 B
build/styles/block-library/theme.css 719 B
build/styles/block-library/verse/style-rtl.css 123 B
build/styles/block-library/verse/style.css 123 B
build/styles/block-library/video/editor-rtl.css 415 B
build/styles/block-library/video/editor.css 416 B
build/styles/block-library/video/style-rtl.css 202 B
build/styles/block-library/video/style.css 202 B
build/styles/block-library/video/theme-rtl.css 134 B
build/styles/block-library/video/theme.css 134 B
build/styles/commands/style-rtl.css 1.72 kB
build/styles/commands/style.css 1.72 kB
build/styles/components/style-rtl.css 14 kB
build/styles/components/style.css 14 kB
build/styles/customize-widgets/style-rtl.css 1.44 kB
build/styles/customize-widgets/style.css 1.44 kB
build/styles/edit-post/classic-rtl.css 426 B
build/styles/edit-post/classic.css 427 B
build/styles/edit-post/style-rtl.css 3.38 kB
build/styles/edit-post/style.css 3.38 kB
build/styles/edit-site/style-rtl.css 15.9 kB
build/styles/edit-site/style.css 15.9 kB
build/styles/edit-widgets/style-rtl.css 4.62 kB
build/styles/edit-widgets/style.css 4.62 kB
build/styles/editor/style-rtl.css 18.6 kB
build/styles/editor/style.css 18.6 kB
build/styles/format-library/style-rtl.css 326 B
build/styles/format-library/style.css 326 B
build/styles/list-reusable-blocks/style-rtl.css 1.02 kB
build/styles/list-reusable-blocks/style.css 1.02 kB
build/styles/media-utils/style-rtl.css 400 B
build/styles/media-utils/style.css 400 B
build/styles/nux/style-rtl.css 622 B
build/styles/nux/style.css 618 B
build/styles/patterns/style-rtl.css 611 B
build/styles/patterns/style.css 611 B
build/styles/preferences/style-rtl.css 415 B
build/styles/preferences/style.css 415 B
build/styles/reusable-blocks/style-rtl.css 275 B
build/styles/reusable-blocks/style.css 275 B
build/styles/widgets/style-rtl.css 1.17 kB
build/styles/widgets/style.css 1.18 kB

compressed-size-action

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Dec 4, 2025

Thanks for getting this PR up so quickly!

Note that this PR currently means that the controls for changing the template part design are no longer available. What could or should we do about that?

I'd vote to add them back in, especially now that template part editing is remaining in isolated "mode". I think if we're deliberately taking something away from users, there should be a pretty good reason. Is there one? Unless the design switcher itself is seen as having little or no value.

I get that editable fields might be a thing one day. Is it thinking too far ahead to leave that space blank in case that feature lands?

I'm sure @fcoveram will have better insight!

@andrewserong
Copy link
Copy Markdown
Contributor Author

I'd vote to add them back in, especially now that template part editing is remaining in isolated "mode".

I think so, too. Basically for template parts I think we want kind of a hybrid, which is to say that we want template parts to show the content list and the design list when the template part block is selected within a template, just like how the right hand sidebar looks when you're in the isolated made and don't have any blocks selected:

image

I'll continue chipping away at this PR tomorrow (and/or next week) — I reckon the next task is to get the Design panel showing for template parts in contentOnly mode (possibly even the Advanced panel, too), and it'll then feel a bit better.

@andrewserong
Copy link
Copy Markdown
Contributor Author

andrewserong commented Dec 4, 2025

Just a quick screenshot before I wrap up for the day (note: I haven't committed this yet) — I think it should look pretty decent with the Design panel added:

image

I'll do some tidying and see if I can push something up tomorrow. I'm also thinking we will probably need to include the Advanced panel in this context, as otherwise there will be no way for a user to select Area, HTML Element, etc:

image

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Dec 4, 2025

I think it should look pretty decent with the Design panel added:

+1 Thanks for looking into it.

I'm sure we'll hear about it if it doesn't work after merge 😄

@andrewserong
Copy link
Copy Markdown
Contributor Author

Update: in d5dcb5f I've pushed a change to allow the slot and advanced controls for template parts (and technically for synced blocks, but they don't actually have those). The result is that we get a hybrid where we're still treating template parts as section blocks and therefore showing the content buttons to select inner blocks, but we also expose the Design and Advanced controls, allowing local changes for the instance of the template part. Here's how it looks:

2025-12-05.12.25.51.mp4

I think this provides a pretty good balance, as it means we've (hopefully) kind of get the best of both worlds of content only controls, being able to click Edit Section to go to the isolated editor, while also allowing the advanced controls.

A byproduct of how I've done this is that some settings of blocks can be exposed in the inspector panel while selected. Like selecting a site icon or toggling settings for the site title. This felt pretty good to me, but happy to look into scaling / rolling this part back if it feels like too much.

I believe this is ready for review. Good things to test are that it's working correctly, but also smoke test with the experiments switched off to make sure that I haven't accidentally exposed anything here that shouldn't be.

Thanks!

@andrewserong andrewserong marked this pull request as ready for review December 5, 2025 01:34
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 5, 2025

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: andrewserong <andrewserong@git.wordpress.org>
Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>
Co-authored-by: talldan <talldanwp@git.wordpress.org>
Co-authored-by: tellthemachines <isabel_brison@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@andrewserong
Copy link
Copy Markdown
Contributor Author

I think the e2e failure is legit, I'll look into it. So the code here might not be final, but should be in a good place to see how it feels to use. If I don't get time to fix this PR properly today, I'll continue on with it on Monday.

@andrewserong
Copy link
Copy Markdown
Contributor Author

andrewserong commented Dec 5, 2025

Alrighty, I believe I've fixed it in a580576 by making this behaviour a bit more restricted. That is, we only inject InspectorControls and AdvancedControls if the root section is what's selected. That addresses the main case we want to handle. Here's how it's looking now:

2025-12-05.14.17.51.mp4

Note that in the above video the template part itself will expose the Design and Advanced controls (in addition to the selectable blocks within Content). And then if you select blocks within a synced pattern, it does not expose settings and advanced.


The code change can likely be tidied up as we should ideally pass down the selectedBlockClientId instead of adding another useSelect, but just wanted to see if I could get it working properly first.

On second thoughts, I think refactoring might be best in a separate PR as some of the names in the parent component are a bit confusing. This should be ready for review now 🤞

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Dec 5, 2025

we only inject InspectorControls and AdvancedControls if the root section is what's selected.

Nice! It's looking good to me:

Screenshot 2025-12-05 at 3 25 48 pm

Here's what I'm seeing:

Kapture.2025-12-05.at.15.26.42.mp4

When editing template parts in isolated mode, the template itself is in content only mode and I have to "Edit section" again to access the internals. This isn't the case for synced patterns. Should template parts work like synced patterns? Apologies if I've missed a convo/details on this. For my part, I'd expect to be able to edit the entire block tree.

const shouldNavigateToIsolatedEditor =
( isSyncedPattern || isTemplatePartBlock ) && onNavigateToEntityRecord;

const handleClick = () => {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this duplicated above in edit-section-menu-item.js?

My eyes could be deceiving me!

Copy link
Copy Markdown
Contributor Author

@andrewserong andrewserong Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sure is! Nearly identical. I kept it non-DRY while hacking this together (happy to consolidate 👍)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cheers! I'll leave my glasses prescription upgrade for next year then.

@andrewserong
Copy link
Copy Markdown
Contributor Author

andrewserong commented Dec 5, 2025

When editing template parts in isolated mode, the template itself is in content only mode and I have to "Edit section" again to access the internals. This isn't the case for synced patterns. Should template parts work like synced patterns? Apologies if I've missed a convo/details on this. For my part, I'd expect to be able to edit the entire block tree.

This is an interesting one, thanks for testing @ramonjd! This isn't that the template part itself is in content only mode, it's that the template part contains a pattern for its markup, and because of that, to the user, it effectively looks like the template part is in content only mode. But it's actually because the template part contains a pattern.

I.e. if I go to view the source of my template part, I see a wrapper group block with the patternName:

<!-- wp:group {"metadata":{"categories":["header","wireframe"],"patternName":"core/simple-header-with-tagline","name":"Simple header with tagline"},....

So I think the question here is: what should we do about contentOnly mode when we're in the isolated editor? Should we switch it off entirely?

I think we probably should. We can even test it on trunk if we go to the Site Editor > Patterns > All template parts, and then select a header, you get this weird experience:

2025-12-05.16.02.40.mp4

So yeah, I think the next step will be to disable it in the isolated editor, if that sounds reasonable to folks? I can dig into that idea next week. Given that this PR is changing what Edit Section does, I think it makes sense to roll it into the work in this PR (and that it feels pretty broken without it)

Let me know if anyone has other ideas, though!

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Dec 5, 2025

his isn't that the template part itself is in content only mode, it's that the template part contains a pattern for its markup, and because of that, to the user, it effectively looks like the template part is in content only mode. But it's actually because the template part contains a pattern.

Oh, 😄 sorry that should have occurred to me

what should we do about contentOnly mode when we're in the isolated editor? Should we switch it off entirely?

I agree with you: that we should. I think it could get confusing for users to have to drill down twice. Just my 2c

Thanks for investigating 🙇🏻

@andrewserong
Copy link
Copy Markdown
Contributor Author

Oh, 😄 sorry that should have occurred to me

No need to apologies, neither of us thought of it! I appreciate the 🦅 👀

@andrewserong andrewserong force-pushed the try/edit-section-button-to-go-to-isolated-editor-for-template-parts-and-synced-blocks branch from a580576 to fc6cdda Compare December 5, 2025 05:59
@andrewserong
Copy link
Copy Markdown
Contributor Author

andrewserong commented Dec 5, 2025

Alrighty, I've pushed another change in fc6cdda that flags if we're in the isolated editor

I'm not sure if this is the best approach, but it's the best I could come up with on a Friday afternoon — I think we need a way to tell the block editor that it's in an isolated editor mode, and therefore to skip the logic that locks down unsynced patterns / treats them as contentOnly mode. That is, when editing template parts / synced patterns directly, we don't want to guard users from making edits.

To do so, I had to add a key to the editor settings and pass it from the editor... again, not sure if there's a better way to do it. But at least it seems to be working pretty well now (I'll likely need to update tests again). Here's another look at the state of this PR:

2025-12-05.16.59.47.mp4

I'll continue on with this next week with fresh eyes, but as always, happy for feedback and ideas! (As an aside, I noticed the Back button in the document bar sometimes doesn't appear to work on first click... not sure what's going on there or if it's an existing bug)

@talldan
Copy link
Copy Markdown
Contributor

talldan commented Dec 8, 2025

This isn't that the template part itself is in content only mode, it's that the template part contains a pattern for its markup, and because of that, to the user, it effectively looks like the template part is in content only mode. But it's actually because the template part contains a pattern.

There is already an issue about this with lots of discussion - ContentOnly experiment: Template Parts with nested patterns appear locked when clicking 'Edit' from the toolbar.

This is one of the problems with the focus mode. The spotlight editing mode by comparison unlocks everything within a section. For focus mode, because it's such a separate experience it's a little harder to achieve that.

@andrewserong
Copy link
Copy Markdown
Contributor Author

There is already an issue about this with lots of discussion - #73343 (comment).

Thanks for linking! The discussion there seems a little inconclusive, but I can add a comment over there, too. This PR is really just hacking on the idea of seeing how we could make the isolated editor feel good for template parts / unsynced patterns. I'm not sure we've achieved that, so consider this PR very much an exploration 😄

This is one of the problems with the focus mode. The spotlight editing mode by comparison unlocks everything within a section. For focus mode, because it's such a separate experience it's a little harder to achieve that.

Yeah, it's a challenging one. I've hacked this PR in to try to disable contentOnly mode altogether while in a focused mode / isolated editor to see how it feels. My hunch is that if someone is editing a template part or synced pattern in focused mode, maybe it's better that we don't really use contentOnly mode at all...

Happy to close out this PR if there's a better approach!

@talldan
Copy link
Copy Markdown
Contributor

talldan commented Dec 8, 2025

Yeah, it's a challenging one. I've hacked this PR in to try to disable contentOnly mode altogether while in a focused mode / isolated editor to see how it feels. My hunch is that if someone is editing a template part or synced pattern in focused mode, maybe it's better that we don't really use contentOnly mode at all...

Yes, that's my hunch too, but I think how it's achieved is the unclear part. I think there is a bigger picture in a sort of editor design mode that could be used for this, but it's too soon, so perhaps something temporary and non-controversial will work.

Copy link
Copy Markdown
Contributor

@talldan talldan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments, but nothing major!

// When editing template parts, patterns, or navigation in the isolated editor,
// we're in an isolated editing context (focused on that entity alone).
const isIsolatedEditor =
params?.postId && FOCUSABLE_ENTITIES.includes( params?.postType );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This approach makes sense to me, though FOCUSABLE_ENTITIES also includes navigation, so I'm wondering if that causes any unexpected side effects. Maybe it's ok because the nav block isn't a section.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On second thoughts, we shouldn't need this code in edit-site as the logic as already being handled at the editor package level. I'll remove the changes to this file.

'wp_template_part',
'wp_block',
'wp_navigation',
].includes( postType );
Copy link
Copy Markdown
Contributor

@talldan talldan Dec 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can read the value from settings, I don't think you need to calculate it again.

Every key in the BLOCK_EDITOR_SETTINGS array should be forwarded, but it might not work for symbol keys. The code here is what handles it:

...Object.fromEntries(
Object.entries( settings ).filter( ( [ key ] ) =>
BLOCK_EDITOR_SETTINGS.includes( key )
)
),

Another option might be adding an extra line or two to the above code so that isIsolatedEditorKey isn't filtered out, though maybe it's never actually part of the entries() in the first place 🤔 .

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It turns out I think this is where we want to calculate it, rather than in edit-site, so I've gone with retaining this code. I'll move it up to the const blockEditorSettings for consistency, though.

Also, I've included wp_navigation as it also uses the isolated editor. Given that editing navigation post types is also quite a granular kind of editing, I think it makes sense to skip contentOnly mode for unsynced patterns there, too. Though I assume it's fairly unlikely for unsynced patterns to make it into being within a wp_navigation, it's probably good to be consistent.

@andrewserong
Copy link
Copy Markdown
Contributor Author

A few comments, but nothing major!

Fantastic, thanks for the comments and review Dan, that's super helpful! I'll work through these notes 👍

@andrewserong andrewserong force-pushed the try/edit-section-button-to-go-to-isolated-editor-for-template-parts-and-synced-blocks branch from fc6cdda to 8ed1544 Compare December 9, 2025 00:53
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

Flaky tests detected in 955301f.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/20053167166
📝 Reported issues:

@andrewserong
Copy link
Copy Markdown
Contributor Author

Good feedback again @talldan, cheers. I think I've worked through it all now, so this should be ready for another look. Do let me know if there's anything I missed, though!

@tellthemachines
Copy link
Copy Markdown
Contributor

I just gave this a quick test run and it's working really well! Definitely keeping the design variations visible is a good idea.

One niggling thing that I noticed - probably unrelated to this changeset - is that it's effectively impossible to select the template part itself if its root container is a content block such as a Cover:

Screenshot 2025-12-09 at 5 18 12 pm

And the problem there is that the design options only appear if the template part is selected, not its root block. I wonder if template part and root block should be equivalent to each other for this purpose?

@andrewserong
Copy link
Copy Markdown
Contributor Author

One niggling thing that I noticed - probably unrelated to this changeset - is that it's effectively impossible to select the template part itself if its root container is a content block such as a Cover:

Oh, good observation! I'd probably consider this something to dig into in subsequent PRs, but I wonder if it'd be worth trying to either:

  • Make clicking outside of the buttons in the Content panel select the parent / containing section block (in this case the template part)
  • Or make clicking the button in the Content panel for block a toggle so that if it's already selected, clicking it a second time will select the parent / containing block

Not too sure, just spitballing ideas for how to make it easier to select the outer wrapper.

I'm not sure we should try to expose the parent's tools (design, advanced) directly to the inner block unless we really have to, though, as it could get a bit tangled... but maybe it's not as complex as I fear. In any case, good ideas to play around with!

I'm a bit time-limited this week, so I might park working on figuring that out for now. Let me know if there's anything anyone thinks should still be addressed in this PR, though.

@tellthemachines
Copy link
Copy Markdown
Contributor

  • Or make clicking the button in the Content panel for block a toggle so that if it's already selected, clicking it a second time will select the parent / containing block

This one sounds more intuitive to me. But yeah definitely something for another PR!

Copy link
Copy Markdown
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM and is working well! Just a couple questions below, nothing blocking.

@andrewserong
Copy link
Copy Markdown
Contributor Author

Just added a comment. If there aren't any objections, I can look into merging this tomorrow. (Also happy to keep iterating if there are any concerns, of course)

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Dec 10, 2025

If there aren't any objections, I can look into merging this tomorrow.

Let's do it! Great stuff

@andrewserong andrewserong merged commit d3734f5 into trunk Dec 11, 2025
34 checks passed
@andrewserong andrewserong deleted the try/edit-section-button-to-go-to-isolated-editor-for-template-parts-and-synced-blocks branch December 11, 2025 01:06
@github-actions github-actions bot added this to the Gutenberg 22.3 milestone Dec 11, 2025
@talldan talldan added the [Block] Template Part Affects the Template Parts Block label Feb 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Block] Template Part Affects the Template Parts Block [Feature] Patterns A collection of blocks that can be synced (previously reusable blocks) or unsynced [Feature] Synced Patterns Related to synced patterns (formerly reusable blocks) [Type] Enhancement A suggestion for improvement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants