Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block.json: Add ancestor prop to schema #39894

Merged
merged 4 commits into from
Apr 4, 2022
Merged

Conversation

DAreRodz
Copy link
Contributor

@DAreRodz DAreRodz commented Mar 30, 2022

What?

This PR adds a new property to the block.json schema called ancestor. Similar to parent, this prop would permit blocks to restrict which blocks they can be inserted into, but allowing other blocks to be placed between them in the block tree (e.g. Group, Columns, etc.).

It also adds the ancestor prop to those Comment blocks that need it:

  • Comment Author Avatar
  • Comment Author Name
  • Comment Content
  • Comment Date
  • Comment Edit Link
  • Comment Reply Link

Why?

Editor users may want to customize the Comment Template layout, so most of the Comment block would need this restriction. This restriction cannot be defined with the current API.

Will close #37181.

How?

  • Adding ancestor to the block.json schema.
  • Handling the ancestor property inside canInsertBlockTypeUnmemoized() selector, the function that decides if a specific block can be inserted or not.
  • Adding a polyfill for the ancestor prop inside unstable__bootstrapServerSideBlockDefinitions(), updating the server-side definition of blocks.

Testing Instructions

  1. Inside the Single Post template (for example), add a Comments Query Loop block
  2. Add a Columns block inside Comment Template
  3. Test that the comment blocks listed above (those in Comment Template) can be moved inside Column.
  4. Test that the comment blocks listed above appear when you search for a new block to add inside Column.
  5. Test that no one of the comment blocks listed above appear when you search for a new block outside Comment Template.

@github-actions
Copy link

github-actions bot commented Mar 30, 2022

Size Change: +408 B (0%)

Total Size: 1.22 MB

Filename Size Change
build/block-editor/index.min.js 148 kB +92 B (0%)
build/block-library/blocks/list/style-rtl.css 88 B +25 B (+40%) 🚨
build/block-library/blocks/list/style.css 88 B +25 B (+40%) 🚨
build/block-library/index.min.js 173 kB +44 B (0%)
build/block-library/reset-rtl.css 478 B +4 B (+1%)
build/block-library/reset.css 478 B +4 B (+1%)
build/block-library/style-rtl.css 11.3 kB +7 B (0%)
build/block-library/style.css 11.3 kB +7 B (0%)
build/blocks/index.min.js 46.9 kB +25 B (0%)
build/components/index.min.js 223 kB +71 B (0%)
build/edit-site/index.min.js 46.6 kB +105 B (0%)
build/reusable-blocks/index.min.js 2.24 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/admin-manifest/index.min.js 1.24 kB
build/annotations/index.min.js 2.77 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.49 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 15.4 kB
build/block-editor/style.css 15.4 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 59 B
build/block-library/blocks/avatar/style.css 59 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 103 B
build/block-library/blocks/code/style.css 103 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.56 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 961 B
build/block-library/blocks/gallery/editor.css 964 B
build/block-library/blocks/gallery/style-rtl.css 1.51 kB
build/block-library/blocks/gallery/style.css 1.51 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 529 B
build/block-library/blocks/image/style.css 535 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 708 B
build/block-library/blocks/navigation-link/editor.css 706 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.03 kB
build/block-library/blocks/navigation/editor.css 2.04 kB
build/block-library/blocks/navigation/style-rtl.css 1.93 kB
build/block-library/blocks/navigation/style.css 1.92 kB
build/block-library/blocks/navigation/view.min.js 2.85 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 260 B
build/block-library/blocks/paragraph/style.css 260 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 370 B
build/block-library/blocks/pullquote/style.css 370 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 140 B
build/block-library/blocks/separator/editor.css 140 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 759 B
build/block-library/blocks/site-logo/editor.css 759 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 149 B
build/block-library/blocks/template-part/editor.css 149 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 934 B
build/block-library/common.css 932 B
build/block-library/editor-rtl.css 9.96 kB
build/block-library/editor.css 9.96 kB
build/block-library/theme-rtl.css 689 B
build/block-library/theme.css 694 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/components/style-rtl.css 14.9 kB
build/components/style.css 14.9 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 14.5 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.39 kB
build/customize-widgets/style.css 1.39 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 8.61 kB
build/date/index.min.js 32 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.58 kB
build/edit-navigation/index.min.js 15.8 kB
build/edit-navigation/style-rtl.css 4.04 kB
build/edit-navigation/style.css 4.05 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 29.6 kB
build/edit-post/style-rtl.css 7.07 kB
build/edit-post/style.css 7.07 kB
build/edit-site/style-rtl.css 7.74 kB
build/edit-site/style.css 7.71 kB
build/edit-widgets/index.min.js 16.3 kB
build/edit-widgets/style-rtl.css 4.4 kB
build/edit-widgets/style.css 4.39 kB
build/editor/index.min.js 38.4 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 4.29 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.83 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.94 kB
build/notices/index.min.js 957 B
build/nux/index.min.js 2.12 kB
build/nux/style-rtl.css 751 B
build/nux/style.css 749 B
build/plugins/index.min.js 1.98 kB
build/preferences/index.min.js 1.2 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 611 B
build/react-i18n/index.min.js 704 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.2 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.99 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.21 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

@DAreRodz
Copy link
Contributor Author

Hey ya 👋 I need some answers before continue with this PR. The promblem is, with this implementation, blocks with the ancestor property doesn’t seem to work yet. Looks like the ancestor prop is somehow filtered out from block types. I've even tried chaning $schema to point to the local file (../../../../schemas/json/block.json), with no success. So, my questions are:

  • Should we split this PR in two, one for changes in the schema, and another to add ancestor in those blocks that need it?

  • If we create separate PRs, is there something else we need to do in order to keep the ancestor property in block types?E.g. update some validation function, or release a new apiVersion for the schema, maybe? How do we do that? (The current apiVersion is 2).

@DAreRodz DAreRodz added [Feature] Block API API that allows to express the block paradigm. [Block] Comment Template Affects the Comment Template Block [Feature] Blocks Overall functionality of blocks labels Mar 30, 2022
@luisherranz
Copy link
Member

I've even tried chaning $schema to point to the local file (../../../../schemas/json/block.json), with no success.

If it doesn't work with a local $schema file, maybe it's not related to the schema.

@gziolo
Copy link
Member

gziolo commented Mar 30, 2022

@DAreRodz, you need to ensure that the ancestor gets polyfilled on the client for now. See a similar case when the handling on the PHP side was missing for variations:

if ( serverSideBlockDefinitions[ blockName ] ) {
// We still need to polyfill `apiVersion` for WordPress version
// lower than 5.7. If it isn't present in the definition shared
// from the server, we try to fallback to the definition passed.
// @see https://github.com/WordPress/gutenberg/pull/29279
if (
serverSideBlockDefinitions[ blockName ].apiVersion ===
undefined &&
definitions[ blockName ].apiVersion
) {
serverSideBlockDefinitions[ blockName ].apiVersion =
definitions[ blockName ].apiVersion;
}
continue;
}

It's a bit of work to add new fields to Block API because it needs to be wired with the block registration functions, classes, and the REST API endpoint. There is also some legacy function that exposes only certain fields to the client from the server.

@DAreRodz
Copy link
Contributor Author

Oh, I see, I noticed, for example, that the function get_block_editor_server_block_settings() is being used here to generate and send block types from the server, and that function simply ignores the ancestor prop (actually any new property unless explicitly specified in the code 😅 ). And the props that are not defined from the server are not included in the client, so... 🤷

Anyway, I've added the polyfil and everything works now. Thanks for the tip, @gziolo. 😁

@DAreRodz DAreRodz marked this pull request as ready for review March 31, 2022 18:36
@DAreRodz DAreRodz requested review from luisherranz, ockham, gziolo and cbravobernal and removed request for ockham and cbravobernal March 31, 2022 18:39
@@ -1382,10 +1382,28 @@ const canInsertBlockTypeUnmemoized = (
parentName
);

let hasBlockAllowedAncestor = true;
Copy link
Contributor

Choose a reason for hiding this comment

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

Hi!

Do we need a default value here?

Copy link
Member

Choose a reason for hiding this comment

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

Yes because if not canInsert will always be false if blockType.ancestor is falsy.

Copy link
Member

@luisherranz luisherranz left a comment

Choose a reason for hiding this comment

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

LGTM!

@gziolo gziolo requested a review from youknowriad April 1, 2022 14:35
@gziolo
Copy link
Member

gziolo commented Apr 1, 2022

@youknowriad, I looked at performance metrics reported on CI and I didn’t see any differences for the inserter’s performance. Can you confirm this new API is good to land from that perspective?

@gziolo gziolo added this to In progress in Comments Loop block via automation Apr 1, 2022
Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

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

No concern from me in terms of performance. I'd like us to think more about this API in relationship to all the other APIs to allow/disallow blocks. Maybe we need some docs with all the APIs (parent, allowedBlocks prop, allowed block setting, ancestor...) We should explain the use-case of each one, and how it differs compared to the others.

@DAreRodz
Copy link
Contributor Author

DAreRodz commented Apr 4, 2022

No concern from me in terms of performance.

Merging the PR in that case. Thanks for your reviews, folks. 😄

We should explain the use-case of each one, and how it differs compared to the others.

@youknowriad, regarding that, should we update some docs before releasing 6.0? Just asking because the only docs I wrote were the ancestor prop description, inside the block.json schema (we can open a new PR if we need to do so, I guess).

@DAreRodz DAreRodz merged commit 41daeaf into trunk Apr 4, 2022
Comments Loop block automation moved this from In progress to Done Apr 4, 2022
@DAreRodz DAreRodz deleted the add/block-json-ancestor-prop branch April 4, 2022 12:24
@github-actions github-actions bot added this to the Gutenberg 13.0 milestone Apr 4, 2022
@youknowriad
Copy link
Contributor

Yes, I think at least we should document this similar to how we document parent https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#parent

Also I believe we need a dedicated page or section somewhere in the handbook, to explain all the different APIs about allowing/hiding blocks and how they relate and differ.

fabiankaegy added a commit that referenced this pull request Apr 4, 2022
Adds documentation for the new API added in #39894
@gziolo
Copy link
Member

gziolo commented Apr 4, 2022

@fabiankaegy opened #40027 to extend the documentation for the block metadata.

We still will need to update WordPress core so this new field is handled in WP_Block_Type class, in REST API endpoint for block types and ensure it gets exposed in the get_block_editor_server_block_settings function.

@bph bph added the Needs Dev Note Requires a developer note for a major WordPress release cycle label Apr 4, 2022
@DAreRodz
Copy link
Contributor Author

DAreRodz commented Apr 5, 2022

We still will need to update WordPress core so this new field is handled in WP_Block_Type class, in REST API endpoint for block types and ensure it gets exposed in the get_block_editor_server_block_settings function.

@gziolo I've opened a Trac ticket 👉 https://core.trac.wordpress.org/ticket/55531#ticket

@gziolo
Copy link
Member

gziolo commented Apr 6, 2022

We still will need to update WordPress core so this new field is handled in WP_Block_Type class, in REST API endpoint for block types and ensure it gets exposed in the get_block_editor_server_block_settings function.

@gziolo I've opened a Trac ticket 👉 https://core.trac.wordpress.org/ticket/55531#ticket

Excellent, I will have a look today.

pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Apr 6, 2022
The `ancestor` field was recently added to the `block.json` schema in Gutenberg. See: WordPress/gutenberg#39894.

Props darerodz.
Fixes #55531.



git-svn-id: https://develop.svn.wordpress.org/trunk@53084 602fd350-edb4-49c9-b593-d223f7449a82
@gziolo
Copy link
Member

gziolo commented Apr 6, 2022

I committed the relared PHP changes in WordPress core in https://core.trac.wordpress.org/changeset/53084. Awesome work @DAreRodz 💯

markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Apr 6, 2022
The `ancestor` field was recently added to the `block.json` schema in Gutenberg. See: WordPress/gutenberg#39894.

Props darerodz.
Fixes #55531.


Built from https://develop.svn.wordpress.org/trunk@53084


git-svn-id: http://core.svn.wordpress.org/trunk@52673 1a063a9b-81f0-0310-95a4-ce76da25c4cd
gMagicScott pushed a commit to gMagicScott/core.wordpress-mirror that referenced this pull request Apr 6, 2022
The `ancestor` field was recently added to the `block.json` schema in Gutenberg. See: WordPress/gutenberg#39894.

Props darerodz.
Fixes #55531.


Built from https://develop.svn.wordpress.org/trunk@53084


git-svn-id: https://core.svn.wordpress.org/trunk@52673 1a063a9b-81f0-0310-95a4-ce76da25c4cd
fabiankaegy added a commit that referenced this pull request Apr 13, 2022
)

* Add documentation for `ancestor` property

Adds documentation for the new API added in #39894

* Update docs/reference-guides/block-api/block-metadata.md

Co-authored-by: Greg Ziółkowski <grzegorz@gziolo.pl>

* Add ancestors example in innerblocks tutorial

Co-authored-by: Greg Ziółkowski <grzegorz@gziolo.pl>
Co-authored-by: Luis Herranz <luisherranz@gmail.com>
@gziolo gziolo mentioned this pull request May 23, 2022
58 tasks
@webmandesign
Copy link
Contributor

webmandesign commented Feb 27, 2023

Hi everybody,

I know this is already closed and merged, but could this functionality be ported to core/query-pagination block, please?

My issue (#48296) is that I would like to add core/query-pagination as a template part and/or a pattern, but this is not supported currently as core/query-pagination can only be a direct child of core/query block (so it can inherit queryId or query data).

Can someone please look whether this PR can be adapted to core/query-pagination? Thanks!

@ntsekouras
Copy link
Contributor

👋 @webmandesign it happened to have opened a PR about that here: #48348. We can continue the discussion there.

@webmandesign
Copy link
Contributor

Cool! Thanks @ntsekouras for pointing this out!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Comment Template Affects the Comment Template Block [Feature] Block API API that allows to express the block paradigm. [Feature] Blocks Overall functionality of blocks Needs Dev Note Requires a developer note for a major WordPress release cycle
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

Post Comments Loop: Unable to put comment blocks inside rows or columns
8 participants