Skip to content

Conversation

@ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Sep 21, 2025

What?

Part of: #71026
Resolves: #21943

This PR adds a simple breadcrumbs block that has two options:

  1. Show the home link
  2. Selection of separator
  3. Support only for hierarchical post types for now

Tasks:

Testing Instructions

  1. Test the new breadcrumb block in hierarchical post types or templates for such types (example is pages)

Screenshots or screencast

Screenshot 2025-09-21 at 1 23 18 PM

@ntsekouras ntsekouras self-assigned this Sep 21, 2025
@ntsekouras ntsekouras added [Type] Enhancement A suggestion for improvement. New Block Suggestion for a new block [Package] Blocks /packages/blocks labels Sep 21, 2025
@github-actions
Copy link

github-actions bot commented Sep 21, 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.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @BrunoAHVincent, @rodolfomartinez.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

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

Unlinked contributors: BrunoAHVincent, rodolfomartinez.

Co-authored-by: youknowriad <[email protected]>
Co-authored-by: ntsekouras <[email protected]>
Co-authored-by: t-hamano <[email protected]>
Co-authored-by: jasmussen <[email protected]>
Co-authored-by: Mamaduka <[email protected]>
Co-authored-by: andrewserong <[email protected]>
Co-authored-by: justintadlock <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: karmatosed <[email protected]>
Co-authored-by: sybrew <[email protected]>
Co-authored-by: aristath <[email protected]>
Co-authored-by: syhussaini <[email protected]>
Co-authored-by: jarekmorawski <[email protected]>
Co-authored-by: LukaszJaro <[email protected]>
Co-authored-by: TheJeffr0 <[email protected]>
Co-authored-by: unscripted <[email protected]>
Co-authored-by: paaljoachim <[email protected]>

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

@github-actions
Copy link

github-actions bot commented Sep 21, 2025

Size Change: +1.17 kB (+0.06%)

Total Size: 1.96 MB

Filename Size Change
build/block-library/index.min.js 239 kB +545 B (+0.23%)
build/block-library/style-rtl.css 15.5 kB +76 B (+0.49%)
build/block-library/style.css 15.4 kB +78 B (+0.51%)
build/editor/index.min.js 137 kB +61 B (+0.04%)
build/block-library/blocks/breadcrumbs/style-rtl.css 203 B +203 B (new file) 🆕
build/block-library/blocks/breadcrumbs/style.css 203 B +203 B (new file) 🆕
ℹ️ View Unchanged
Filename Size
build-module/a11y/index.min.js 482 B
build-module/block-library/accordion/view.min.js 656 B
build-module/block-library/file/view.min.js 466 B
build-module/block-library/form/view.min.js 533 B
build-module/block-library/image/view.min.js 1.78 kB
build-module/block-library/navigation/view.min.js 1.19 kB
build-module/block-library/query/view.min.js 767 B
build-module/block-library/search/view.min.js 639 B
build-module/interactivity-router/full-page.min.js 565 B
build-module/interactivity-router/index.min.js 11.6 kB
build-module/interactivity/debug.min.js 17.7 kB
build-module/interactivity/index.min.js 14.1 kB
build/a11y/index.min.js 925 B
build/annotations/index.min.js 2.13 kB
build/api-fetch/index.min.js 2.41 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.18 kB
build/block-directory/style-rtl.css 1.05 kB
build/block-directory/style.css 1.05 kB
build/block-editor/content-rtl.css 4.52 kB
build/block-editor/content.css 4.51 kB
build/block-editor/default-editor-styles-rtl.css 418 B
build/block-editor/default-editor-styles.css 418 B
build/block-editor/index.min.js 270 kB
build/block-editor/style-rtl.css 16 kB
build/block-editor/style.css 16 kB
build/block-library/blocks/accordion-heading/style-rtl.css 340 B
build/block-library/blocks/accordion-heading/style.css 340 B
build/block-library/blocks/accordion-item/style-rtl.css 213 B
build/block-library/blocks/accordion-item/style.css 213 B
build/block-library/blocks/accordion-panel/style-rtl.css 99 B
build/block-library/blocks/accordion-panel/style.css 99 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 61 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 265 B
build/block-library/blocks/button/editor.css 265 B
build/block-library/blocks/button/style-rtl.css 554 B
build/block-library/blocks/button/style.css 554 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 349 B
build/block-library/blocks/buttons/style.css 349 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 139 B
build/block-library/blocks/code/style.css 139 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 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 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-author-name/style-rtl.css 72 B
build/block-library/blocks/comment-author-name/style.css 72 B
build/block-library/blocks/comment-content/style-rtl.css 120 B
build/block-library/blocks/comment-content/style.css 120 B
build/block-library/blocks/comment-date/style-rtl.css 65 B
build/block-library/blocks/comment-date/style.css 65 B
build/block-library/blocks/comment-edit-link/style-rtl.css 70 B
build/block-library/blocks/comment-edit-link/style.css 70 B
build/block-library/blocks/comment-reply-link/style-rtl.css 71 B
build/block-library/blocks/comment-reply-link/style.css 71 B
build/block-library/blocks/comment-template/style-rtl.css 191 B
build/block-library/blocks/comment-template/style.css 191 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 168 B
build/block-library/blocks/comments-pagination/editor.css 168 B
build/block-library/blocks/comments-pagination/style-rtl.css 201 B
build/block-library/blocks/comments-pagination/style.css 201 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 842 B
build/block-library/blocks/comments/editor.css 842 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 637 B
build/block-library/blocks/cover/editor-rtl.css 631 B
build/block-library/blocks/cover/editor.css 631 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 331 B
build/block-library/blocks/embed/editor.css 331 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 278 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 366 B
build/block-library/blocks/form-input/style.css 366 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/freeform/editor-rtl.css 2.59 kB
build/block-library/blocks/freeform/editor.css 2.59 kB
build/block-library/blocks/gallery/editor-rtl.css 615 B
build/block-library/blocks/gallery/editor.css 616 B
build/block-library/blocks/gallery/style-rtl.css 1.83 kB
build/block-library/blocks/gallery/style.css 1.83 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 334 B
build/block-library/blocks/group/editor.css 334 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 353 B
build/block-library/blocks/html/editor.css 354 B
build/block-library/blocks/image/editor-rtl.css 763 B
build/block-library/blocks/image/editor.css 763 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 139 B
build/block-library/blocks/latest-posts/editor.css 138 B
build/block-library/blocks/latest-posts/style-rtl.css 520 B
build/block-library/blocks/latest-posts/style.css 520 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 321 B
build/block-library/blocks/media-text/editor.css 320 B
build/block-library/blocks/media-text/style-rtl.css 543 B
build/block-library/blocks/media-text/style.css 542 B
build/block-library/blocks/more/editor-rtl.css 393 B
build/block-library/blocks/more/editor.css 393 B
build/block-library/blocks/navigation-link/editor-rtl.css 625 B
build/block-library/blocks/navigation-link/editor.css 628 B
build/block-library/blocks/navigation-link/style-rtl.css 190 B
build/block-library/blocks/navigation-link/style.css 188 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.23 kB
build/block-library/blocks/navigation/editor.css 2.24 kB
build/block-library/blocks/navigation/style-rtl.css 2.27 kB
build/block-library/blocks/navigation/style.css 2.26 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 356 B
build/block-library/blocks/page-list/editor.css 356 B
build/block-library/blocks/page-list/style-rtl.css 192 B
build/block-library/blocks/page-list/style.css 192 B
build/block-library/blocks/paragraph/editor-rtl.css 251 B
build/block-library/blocks/paragraph/editor.css 251 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author-biography/style-rtl.css 74 B
build/block-library/blocks/post-author-biography/style.css 74 B
build/block-library/blocks/post-author-name/style-rtl.css 69 B
build/block-library/blocks/post-author-name/style.css 69 B
build/block-library/blocks/post-author/style-rtl.css 188 B
build/block-library/blocks/post-author/style.css 189 B
build/block-library/blocks/post-comments-count/style-rtl.css 72 B
build/block-library/blocks/post-comments-count/style.css 72 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 525 B
build/block-library/blocks/post-comments-form/style.css 525 B
build/block-library/blocks/post-comments-link/style-rtl.css 71 B
build/block-library/blocks/post-comments-link/style.css 71 B
build/block-library/blocks/post-content/style-rtl.css 61 B
build/block-library/blocks/post-content/style.css 61 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 715 B
build/block-library/blocks/post-featured-image/editor.css 712 B
build/block-library/blocks/post-featured-image/style-rtl.css 347 B
build/block-library/blocks/post-featured-image/style.css 347 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/style-rtl.css 414 B
build/block-library/blocks/post-template/style.css 414 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 162 B
build/block-library/blocks/post-title/style.css 162 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 133 B
build/block-library/blocks/pullquote/editor.css 133 B
build/block-library/blocks/pullquote/style-rtl.css 365 B
build/block-library/blocks/pullquote/style.css 365 B
build/block-library/blocks/pullquote/theme-rtl.css 176 B
build/block-library/blocks/pullquote/theme.css 176 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 154 B
build/block-library/blocks/query-pagination/editor.css 154 B
build/block-library/blocks/query-pagination/style-rtl.css 237 B
build/block-library/blocks/query-pagination/style.css 237 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query-total/style-rtl.css 64 B
build/block-library/blocks/query-total/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 432 B
build/block-library/blocks/query/editor.css 432 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 236 B
build/block-library/blocks/read-more/style-rtl.css 131 B
build/block-library/blocks/read-more/style.css 131 B
build/block-library/blocks/rss/editor-rtl.css 126 B
build/block-library/blocks/rss/editor.css 126 B
build/block-library/blocks/rss/style-rtl.css 284 B
build/block-library/blocks/rss/style.css 283 B
build/block-library/blocks/search/editor-rtl.css 199 B
build/block-library/blocks/search/editor.css 199 B
build/block-library/blocks/search/style-rtl.css 665 B
build/block-library/blocks/search/style.css 666 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 773 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/editor-rtl.css 85 B
build/block-library/blocks/site-title/editor.css 85 B
build/block-library/blocks/site-title/style-rtl.css 143 B
build/block-library/blocks/site-title/style.css 143 B
build/block-library/blocks/social-link/editor-rtl.css 314 B
build/block-library/blocks/social-link/editor.css 314 B
build/block-library/blocks/social-links/editor-rtl.css 339 B
build/block-library/blocks/social-links/editor.css 338 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.51 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 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-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 92 B
build/block-library/blocks/tag-cloud/editor.css 92 B
build/block-library/blocks/tag-cloud/style-rtl.css 248 B
build/block-library/blocks/tag-cloud/style.css 248 B
build/block-library/blocks/template-part/editor-rtl.css 368 B
build/block-library/blocks/template-part/editor.css 368 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 B
build/block-library/blocks/term-template/editor-rtl.css 225 B
build/block-library/blocks/term-template/editor.css 225 B
build/block-library/blocks/term-template/style-rtl.css 135 B
build/block-library/blocks/term-template/style.css 135 B
build/block-library/blocks/terms-query/style-rtl.css 70 B
build/block-library/blocks/terms-query/style.css 70 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 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 413 B
build/block-library/blocks/video/editor.css 414 B
build/block-library/blocks/video/style-rtl.css 202 B
build/block-library/blocks/video/style.css 202 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.5 kB
build/block-library/editor.css 11.5 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/theme-rtl.css 715 B
build/block-library/theme.css 719 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.7 kB
build/commands/index.min.js 16.3 kB
build/commands/style-rtl.css 980 B
build/commands/style.css 977 B
build/components/index.min.js 252 kB
build/components/style-rtl.css 13.7 kB
build/components/style.css 13.7 kB
build/compose/index.min.js 12.8 kB
build/core-commands/index.min.js 3.58 kB
build/core-data/index.min.js 75.4 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.45 kB
build/customize-widgets/style.css 1.45 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.7 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 597 B
build/edit-post/classic.css 599 B
build/edit-post/index.min.js 13.9 kB
build/edit-post/style-rtl.css 2.8 kB
build/edit-post/style.css 2.81 kB
build/edit-site/index.min.js 242 kB
build/edit-site/posts-rtl.css 9.41 kB
build/edit-site/posts.css 9.41 kB
build/edit-site/style-rtl.css 15.5 kB
build/edit-site/style.css 15.5 kB
build/edit-widgets/index.min.js 17.8 kB
build/edit-widgets/style-rtl.css 4.07 kB
build/edit-widgets/style.css 4.08 kB
build/editor/style-rtl.css 9.6 kB
build/editor/style.css 9.61 kB
build/element/index.min.js 4.86 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.23 kB
build/format-library/style-rtl.css 497 B
build/format-library/style.css 497 B
build/hooks/index.min.js 1.65 kB
build/html-entities/index.min.js 467 B
build/i18n/index.min.js 2.23 kB
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.32 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 875 B
build/list-reusable-blocks/style.css 876 B
build/media-utils/index.min.js 3.69 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.62 kB
build/nux/style-rtl.css 791 B
build/nux/style.css 787 B
build/patterns/index.min.js 7.55 kB
build/patterns/style-rtl.css 711 B
build/patterns/style.css 710 B
build/plugins/index.min.js 1.87 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 590 B
build/preferences/style.css 589 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 978 B
build/react-i18n/index.min.js 640 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.53 kB
build/reusable-blocks/style-rtl.css 281 B
build/reusable-blocks/style.css 281 B
build/rich-text/index.min.js 12.2 kB
build/router/index.min.js 5.47 kB
build/server-side-render/index.min.js 1.6 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.04 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.97 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 556 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/vips/index.min.js 36.2 kB
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.17 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@github-actions
Copy link

github-actions bot commented Sep 21, 2025

Flaky tests detected in e977d63.
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/18271342506
📝 Reported issues:

@ntsekouras ntsekouras added [Package] Blocks /packages/blocks [Package] Block library /packages/block-library and removed [Package] Blocks /packages/blocks [Type] Enhancement A suggestion for improvement. labels Sep 21, 2025
@jasmussen
Copy link
Contributor

Hey, took this for a spin, nice work. I may be doing some things wrong with the compilation, if so let me know.

When I inserted it first, I inserted it in a post, just to quickly test. It gave me this:

Screenshot 2025-09-29 at 09 32 13

If it doesn't work there, can we omit the block from the post editor inserter?

And if you can insert it regardless, perhaps we can clarify the error message. That speaks to the purpose of this as well, which is confusing, so let me also include this screenshot:

Screenshot 2025-09-29 at 09 33 59

"Post Breadcrumbs" reads to me as breadcrumbs for a post. I imagine something like Home → Blog → 2025 → [Postname]. Yet it explains in the description, as well as the error message that it's for hierarchical post types, i.e. Pages. I don't think the name or description helps that. Can we:

  • Rename the block to just "Breadcrumbs"
  • Omit it from the contexts in which it doesn't work. I.e. if it doesn't work in posts, don't show it in the inserter there.
  • On templates if you insert it into a context where it doesn't work, can we do a better error message, something like: "Breadcrumbs block only works in the Page template."
  • Update the sidebar description to be much more descriptive. We can go very verbose here. For example: "Display a breadcrumb trail for Pages, or for hierarchical post types. The block is useful to insert in the Pages template."

When I do insert it in a Page template, I expect to see the actual breadcrumb, but I see only this:

Screenshot 2025-09-29 at 09 34 23

I suspect this is because I'm inserting it into a template, but the template holds only dummy content and doesn't have a hierarchy. But the pagination block has a similar problem, yet it shows this:
image

I'd do something similar here, and in a template, show:

"Home / Ancestor / Parent / Page"

... or something like that. Be sure to even underline home, ancestor and parent in the above example, you can link to #. The purpose is to make it possible to visually style the breadcrumb.

Not a blocker, but a followup that would be good to add when possible, would be the ability to customize the separator. / is a good default because it's bidirectional and works in RTL languages, but I imagine a theme developer would like to be able to replace with a variety of alternatives, such as > or → or · or | or —. To be clear I'd expect here an input field where you can add your own unicode character, not an icon selector.

We also need a better icon. I can design one for you, not today but perhaps tomorrow.

Screenshot 2025-09-29 at 09 32 32

Finally, if we call this block just "Breadcrumbs", can we make it work not just for hierarchical posts, but for other post types as well? Not a blocker, but it seems useful to have a single block you could use in a variety of contexts.

@ntsekouras ntsekouras added the No Core Sync Required Indicates that any changes do not need to be synced to WordPress Core label Sep 29, 2025
@ntsekouras
Copy link
Contributor Author

ntsekouras commented Sep 29, 2025

If it doesn't work there, can we omit the block from the post editor inserter?

This behavior is tricky and added a filter here, similar to what we do for template parts, post content etc..

In general it's still not working exactly as you had in mind, because if we also show the template, the block can be inserted. I'm not sure we should try to fine tune this as much as we can (like checking specific templates etc..) because it might get out of hand trying to add various conditionals.

We have the same issue with many blocks right now (ex. Archive Title, Term description and many more) and if we want to find a good solution for such context detection we should explore a way to cover all blocks. I'd even argue that this block might not even need special care, but maybe it's fine due to its name (Breadcrumbs) that might be more confusing than Term description for example.

I'd do something similar here, and in a template, show: "Home / Ancestor / Parent / Page"

The other thing that is quite fragile is the placeholder, which I added in my last commit. This block is server side rendered and we try to have a placeholder in the editor that matches that. This means that if we change the server side output and not update the edit, there will be a mismatch.

I'd love some more thoughts about this. Maybe @Mamaduka or @youknowriad?

We also need a better icon. I can design one for you, not today but perhaps tomorrow.

That would be awesome, thank you!

@youknowriad
Copy link
Contributor

The other thing that is quite fragile is the placeholder, which I added in my last commit.

I think it's ok to have a placeholder when there's no context that tries to mimick the output.

@Mamaduka
Copy link
Member

I think it's ok to have a placeholder when there's no context that tries to mimick the output.

+1. A general placeholder should be fine when there's no context. There's not much we can do in those scenarios.

@jasmussen
Copy link
Contributor

Great progress in a short amount of time, kudos.

image

I think this works. But perhaps instead of "Page", can it be "Current" or "Item" or "Entry"? Something else that's more agnostic to the CPT you're on? Or if it's still going to be a breadcrumb blocks for posts only, perhaps hardcode "Post"? I don't want to make this placeholder any more fragile than you say it already is, but that's the last piece.

Screenshot 2025-09-30 at 10 18 45

Can this be a text input instead?

Screenshot 2025-09-30 at 10 18 58

Can we add the typography and color panel here so you can style those?

As for icons, how about this?
image

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 13.5h3v-3H4v3Zm6-3.5 2 2-2 2 1 1 3-3-3-3-1 1Zm7 .5v3h3v-3h-3Z" style="fill:#1e1e1e"/></svg>

@ntsekouras ntsekouras changed the title Blocks: Add post breadcrumbs block Blocks: Add Breadcrumbs block Oct 1, 2025
@ntsekouras ntsekouras force-pushed the add/breacrumb-block branch from bed0a63 to 866313c Compare October 1, 2025 14:53
@ntsekouras ntsekouras force-pushed the add/breacrumb-block branch from 4eb7739 to fb2d9f0 Compare October 6, 2025 05:29
@ntsekouras
Copy link
Contributor Author

Since the plan is to support breadcrumbs for multiple types(post, terms, archive, etc..) I renamed the block to just breadcrumbs.

What do you think of merging and quickly following up with more functionality, starting with terms?

Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

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

As v1, we think it's robust, minimal, and ready to ship.

We can add the "terms" behavior as a follow-up which would force us to think about how to differentiate between "auto" and "manual" behavior. I think we need a "help" text in the sidebar explaining what the block does in "auto" behavior.

Let's carefully consider this in a follow-up.

P.S. Once the Gutenberg_Hierarchical_Sort class is backported to core, we might be able to refactor the Edit component to use client-side rendering. See:

@ntsekouras ntsekouras merged commit 62dff07 into trunk Oct 6, 2025
75 checks passed
@ntsekouras ntsekouras deleted the add/breacrumb-block branch October 6, 2025 09:00
@github-actions github-actions bot added this to the Gutenberg 21.9 milestone Oct 6, 2025
@bgardner
Copy link

bgardner commented Oct 6, 2025

Maybe I’m doing something wrong, but I tried testing this in Playground, and added it to the Single template. While it shows in the site editor:

image

It does not output anything on the front end:

image

@justintadlock
Copy link
Contributor

@bgardner - The current version only works for singular post views of hierarchical post types.

@ntsekouras
Copy link
Contributor Author

@bgardner it's what @justintadlock said. I'll open a follow up to support more cases and start with terms breadcrumbs.

@bgardner
Copy link

bgardner commented Oct 6, 2025

@justintadlock Singular being different than Single?

@justintadlock
Copy link
Contributor

@justintadlock Singular being different than Single?

"Singular" covers more use cases than "single" (for example, is_singular() covers Pages and Posts, but is_single() doesn't cover Pages). But the words are mostly used interchangeably.

Honestly, it'd be more appropriate to say that the current version is tied to a post context and only when that post type is hierarchical. It's not really checking if we're on a single or singular view.

Regardless, it basically only works for Pages and hierarchical post types at the moment.

@bgardner
Copy link

bgardner commented Oct 6, 2025

@justintadlock Completely understand. Just wanted to confirm that what I posted above is expected behavior (and not a bug). Which it appears to be (expected). Appreciate it!

Copy link
Member

@westonruter westonruter left a comment

Choose a reason for hiding this comment

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

Post-merge review of the PHP code.

@mcsf
Copy link
Contributor

mcsf commented Oct 10, 2025

Edit: I meant to add this comment in #72124. I'll add it there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Block Suggestion for a new block No Core Sync Required Indicates that any changes do not need to be synced to WordPress Core [Package] Block library /packages/block-library

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New Breadcrumbs Block