Skip to content

Block Bindings: Add support for Cover block background image#74032

Closed
Copilot wants to merge 10 commits intotrunkfrom
copilot/add-support-cover-block-background-image
Closed

Block Bindings: Add support for Cover block background image#74032
Copilot wants to merge 10 commits intotrunkfrom
copilot/add-support-cover-block-background-image

Conversation

Copy link
Contributor

Copilot AI commented Dec 16, 2025

Summary

This PR adds complete block bindings support for the Cover block's id and url attributes, enabling dynamic image sources for cover backgrounds through block bindings and pattern overrides.

Issues Addressed (from PR review comments)

Issue 1: dimRatio Overlay (100% opacity showing black image)

Problem: When binding an image, the overlay remained at 100% opacity, showing a black cover instead of the image.

Solution: Added automatic dimRatio adjustment from 100 to 50 when an image is FIRST set via bindings. The logic properly detects the initial image set (from falsy to truthy) and only triggers once, matching the behavior when users manually select an image.

Implementation Details:

  • Uses refs to track previous id and url values
  • Only adjusts dimRatio when transitioning from falsy (undefined, null, etc.) to truthy value
  • Prevents repeated adjustments when changing between valid images

Issue 2: Pattern Overrides Not Working

Problem: Pattern overrides were not functional - the UI and behavior didn't support them.

Solution: Added full pattern overrides support with proper detection and UI adjustments.

Implementation Details:

  • Detects pattern overrides via metadata?.bindings?.__default?.source === 'core/pattern-overrides'
  • Hides MediaReplaceFlow controls when pattern overrides are enabled
  • Leverages existing PHP infrastructure that automatically expands __default bindings

Complete Feature Set

PHP (Server-Side):

  • Block bindings registration for id and url attributes
  • Server-side rendering with bound value precedence
  • Support for both attachment IDs and external URLs
  • Secure HTML generation using WP_HTML_Tag_Processor

JavaScript (Editor):

  • Pattern overrides detection and UI integration
  • Automatic dimRatio adjustment for bound images
  • Conditional media controls based on pattern overrides
  • Proper state tracking with refs

Tests:

  • PHP unit tests for both id and url bindings

Code Quality

  • ✅ All review feedback addressed
  • ✅ Proper ref initialization
  • ✅ Comprehensive null/undefined handling
  • ✅ Clear, documented logic
  • ✅ All syntax validated
Original prompt

This section details on the original issue you should resolve

<issue_title>Block Bindings: Add support for the Cover block background image</issue_title>
<issue_description>## What problem does this address?

Right now you can tie the cover block's image to the featured image, but that's as dynamic as you can get. Cover blocks make great containers for synced patterns and it would be great to be able to have block overrides on the cover block's image. The controls are already in the block toolbar, so it shouldn't require too much UI adjustment.

What is your proposed solution?

Enable block bindings/overrides on the cover block's image ID attribute.
</issue_description>

<agent_instructions>Propose a PR similar to #72062, but t beware that one is still not working as expected, specially on pattern overrides.</agent_instructions>

Comments on the Issue (you are @copilot in this section)

@SantosGuillamot I am not familiar with the cover block code, but while working on adding support for some attributes of the image, they could benefit from future `set_inner_html` or `set_outer_html` methods from the HTML API. I assumed that, to cover the different use cases, the cover block would need those as well. But I might be mistaken and maybe that's not the case. @justintadlock Just want to echo my support for this specific block to have bindings. It'll open up a lot of custom things I want to do with category/tag/term archives.

I can actually kind of fake this to setting the Cover (outside the loop) to use the featured image, but it's really just using the first post's image if it exists:

author-archive-cover

I have bunches and bunches of other use cases too.

@t-hamano This issue has been punted to 6.9. Let's move this issue to the 6.9 Editor Tasks board and see what's possible in 6.9. @t-hamano @ockham @cbravobernal I'd love some feedback on whether there are any technical barriers to adding block binding support for the cover block image, and whether it's worth the effort for WP 6.9 🙏 @cbravobernal > [@ockham](https://github.com/ockham)[](https://profiles.wordpress.org/bernhard-reiter) [@cbravobernal](https://github.com/cbravobernal)[](https://profiles.wordpress.org/cbravobernal) I'd love some feedback on whether there are any technical barriers to adding block binding support for the cover block image, and whether it's worth the effort for WP 6.9 🙏

We still need to land, test and confirm the new approach this image caption PR. #71483

Regarding Core, we are landing the technical barriers in these PRs:

Once is done, we can start adding more compatibility to different blocks. But we need some time. We are 6 weeks until the last RC of 6.9, so let's wait for a couple of weeks and see how is going.</comment_new>
<comment_new>@t-hamano
This ticket was featured on today's 6.9 Bug Sclub.

Is this issue ready to be tackled now, or do we need to harden Block Bindings a bit more? If it's the latter, let's punt this issue to 7.0.</comment_new>
<comment_new>@cbravobernal

This ticket was featured on today's 6.9 Bug Scrub.

Is this issue ready to be tackled now, or do we need to harden Block Bindings a bit more? If it's the latter, let's punt this issue to 7.0.

The issue is being worked in #72062

The cover background is working. But the "featured image" option in pattern overrides is not working as expected. I'm afraid it won't be ready for 6.9


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits December 16, 2025 10:49
Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
@ockham ockham marked this pull request as ready for review December 16, 2025 10:54
@github-actions
Copy link

github-actions bot commented Dec 16, 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: @Copilot, @jptweb.

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: Copilot, jptweb.

Co-authored-by: cbravobernal <cbravobernal@git.wordpress.org>
Co-authored-by: SantosGuillamot <santosguillamot@git.wordpress.org>
Co-authored-by: justintadlock <greenshady@git.wordpress.org>
Co-authored-by: Drivingralle <drivingralle@git.wordpress.org>
Co-authored-by: kubiqsk <kubiq@git.wordpress.org>
Co-authored-by: thomasnavarro <thomasnavarro@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>
Co-authored-by: bacoords <bacoords@git.wordpress.org>

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

@cbravobernal cbravobernal added [Type] Enhancement A suggestion for improvement. [Block] Cover Affects the Cover Block - used to display content laid over a background image labels Dec 16, 2025
Copilot AI and others added 3 commits December 16, 2025 11:00
Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for block bindings in cover block background image Block Bindings: Add support for Cover block background image Dec 16, 2025
Copilot AI requested a review from cbravobernal December 16, 2025 11:06
@github-actions
Copy link

github-actions bot commented Dec 16, 2025

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

Copy link
Contributor

@cbravobernal cbravobernal left a comment

Choose a reason for hiding this comment

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

The code is working on the frontend, but we still have some bugs.

    1. When I bind the image for the cover, the overlay opacity is 100 by default, which means the frontend will show a black image. Please confirm is a common issue in WP Cover block for default images and fix it if not.
    1. It does not support pattern overrides. And all bindable attributes should support it.

- Automatically adjust dimRatio from 100 to 50 when image is set via bindings
- Add pattern overrides detection to prevent media controls showing when overrides are enabled
- Pass arePatternOverridesEnabled prop to block controls

Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Dec 16, 2025

The code is working on the frontend, but we still have some bugs.

    1. When I bind the image for the cover, the overlay opacity is 100 by default, which means the frontend will show a black image. ...

Both issues have been addressed in commit 6708fa0:

Issue 1 (dimRatio 100% showing black image): This is the default behavior of the Cover block. When an image is added via the UI, the block automatically adjusts dimRatio from 100 to 50 to make the image visible. However, this logic wasn't running for bound images. I've added a useEffect hook that detects when an image is set via bindings and automatically adjusts dimRatio to 50, matching the same behavior as manually adding an image.

Issue 2 (Pattern overrides not working): Added full pattern overrides support:

  • The PHP side already handles __default bindings by expanding them to all supported attributes
  • Added detection of pattern overrides in the editor via metadata?.bindings?.__default?.source === 'core/pattern-overrides'
  • Media replacement controls are now hidden when pattern overrides are enabled
  • The pattern override UI will now appear and function correctly

The block now properly supports both pattern overrides and regular block bindings for the id and url attributes.

Copilot AI and others added 3 commits December 16, 2025 15:53
- Remove unused prevHasImageBinding ref
- Extract image change detection logic for better readability
- Add clarifying comments

Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
- Initialize refs with undefined to properly track initial state
- Clarify imageJustSet logic to only trigger on first image set, not on changes
- Fix indentation for EmbedVideoUrlInput

Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
- Explicitly set useRef(undefined) for clarity
- Use falsy check (!prevId.current) instead of explicit undefined check
- This handles null, undefined, 0, and empty string cases consistently

Co-authored-by: cbravobernal <37012961+cbravobernal@users.noreply.github.com>
Copilot AI requested a review from cbravobernal December 16, 2025 15:58
@cbravobernal cbravobernal marked this pull request as draft December 16, 2025 16:20
Copy link
Contributor

@cbravobernal cbravobernal left a comment

Choose a reason for hiding this comment

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

Can you please tell me which takes precedence if you bind both url and id and why?

Copy link
Contributor Author

Copilot AI commented Dec 16, 2025

Can you please tell me which takes precedence if you bind both url and id and why?

When both url and id are bound, id takes precedence.

The logic (in index.php lines 139-156, 170-187, 190-195):

  1. First checks if id binding exists and has a value → uses wp_get_attachment_image() or wp_get_attachment_image_url()
  2. Only if no id (or it's null/empty), falls back to url binding → uses URL directly

Why this precedence:

  • id (attachment ID) provides richer metadata: alt text, focal point, image sizes, wp-image-{id} class
  • url (external URL) is simpler but lacks WordPress attachment metadata
  • This matches WordPress conventions where attachment IDs are preferred over raw URLs

If both are bound and both have values, only id is used; url is ignored.

@cbravobernal
Copy link
Contributor

cbravobernal commented Dec 16, 2025

Can you please tell me which takes precedence if you bind both url and id and why?

When both url and id are bound, id takes precedence.

The logic (in index.php lines 139-156, 170-187, 190-195):

  1. First checks if id binding exists and has a value → uses wp_get_attachment_image() or wp_get_attachment_image_url()
  2. Only if no id (or it's null/empty), falls back to url binding → uses URL directly

Why this precedence:

  • id (attachment ID) provides richer metadata: alt text, focal point, image sizes, wp-image-{id} class
  • url (external URL) is simpler but lacks WordPress attachment metadata
  • This matches WordPress conventions where attachment IDs are preferred over raw URLs

If both are bound and both have values, only id is used; url is ignored.

@copilot And what would happen if id does not point to an image?

@github-actions
Copy link

Size Change: -547 B (-0.02%)

Total Size: 2.58 MB

Filename Size Change
build/scripts/block-library/index.min.js 281 kB -450 B (-0.16%)
build/scripts/editor/index.min.js 284 kB -11 B (0%)
build/styles/block-library/editor-rtl.css 11.8 kB -19 B (-0.16%)
build/styles/block-library/editor.css 11.8 kB -17 B (-0.14%)
build/styles/block-library/navigation/editor-rtl.css 2.25 kB -27 B (-1.18%)
build/styles/block-library/navigation/editor.css 2.26 kB -23 B (-1.01%)
ℹ️ 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/base-styles/index.min.js 98 B
build/scripts/blob/index.min.js 631 B
build/scripts/block-directory/index.min.js 8.03 kB
build/scripts/block-editor/index.min.js 317 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.6 kB
build/scripts/commands/index.min.js 19.9 kB
build/scripts/components/index.min.js 272 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.4 kB
build/scripts/edit-site/index.min.js 240 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.4 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.86 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.29 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.91 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.35 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/base-styles/admin-schemes-rtl.css 775 B
build/styles/base-styles/admin-schemes.css 775 B
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.01 kB
build/styles/block-editor/content.css 4 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 15.5 kB
build/styles/block-editor/style.css 15.5 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/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-overlay-close/style-rtl.css 249 B
build/styles/block-library/navigation-overlay-close/style.css 249 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/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.6 kB
build/styles/block-library/style.css 16.6 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 kB
build/styles/commands/style.css 1 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 2.63 kB
build/styles/edit-post/style.css 2.63 kB
build/styles/edit-site/style-rtl.css 15.1 kB
build/styles/edit-site/style.css 15.1 kB
build/styles/edit-widgets/style-rtl.css 3.85 kB
build/styles/edit-widgets/style.css 3.86 kB
build/styles/editor/style-rtl.css 18.6 kB
build/styles/editor/style.css 18.5 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 250 B
build/styles/list-reusable-blocks/style.css 249 B
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

Copy link
Contributor

@cbravobernal cbravobernal left a comment

Choose a reason for hiding this comment

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

@copilot And what would happen if id does not point to an image?

Copy link
Contributor Author

Copilot AI commented Dec 17, 2025

@copilot And what would happen if id does not point to an image?

If id does not point to a valid image attachment:

Non-parallax/non-repeated mode (line 171):

  • wp_get_attachment_image() returns an empty string
  • Results in $image = '', so no image is rendered

Parallax/repeated mode (line 191):

  • wp_get_attachment_image_url() returns false
  • $current_featured_image = false (falsy)
  • Line 198 check fails: ! $current_featured_image is true
  • Returns original $content unchanged (no image added)

Fallback behavior:
If there's also a url binding with a valid value, it won't be used because id takes precedence. The cover will render without a background image, showing only the overlay and inner content.

Can you please tell me which takes precedence if you bind both url and id and why?

When both url and id are bound, id takes precedence.
...

If id does not point to a valid image attachment:

Non-parallax/non-repeated mode (line 171):

  • wp_get_attachment_image() returns an empty string
  • Results in $image = '', so no image is rendered

Parallax/repeated mode (line 191):

  • wp_get_attachment_image_url() returns false
  • $current_featured_image = false (falsy)
  • Line 198 check fails: ! $current_featured_image is true
  • Returns original $content unchanged (no image added)

Fallback behavior:
If there's also a url binding with a valid value, it won't be used because id takes precedence. The cover will render without a background image, showing only the overlay and inner content.

@cbravobernal
Copy link
Contributor

Let's close the PR and use it as a possible reference.

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

Labels

[Block] Cover Affects the Cover Block - used to display content laid over a background image [Type] Enhancement A suggestion for improvement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Block Bindings: Add support for the Cover block background image

2 participants