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

Add handling for __default attribute to block bindings for pattern overrides #6694

Conversation

talldan
Copy link
Contributor

@talldan talldan commented May 31, 2024

Trac ticket: https://core.trac.wordpress.org/ticket/61333

This is the PHP backport for the gutenberg PR WordPress/gutenberg#60694.

It adds handling for a __default block binding attribute for pattern overrides. When this binding attribute is encountered by the block binding code it dynamically adds support for all supported block binding attributes.

Testing instructions

This has been rebased with the latest package updates, so is now fully testable.

  1. Add a heading, paragragph, image and button to a post (or use a pattern that contains those blocks)
  2. Select them and choose 'Create pattern' from the block options menu
  3. Name the pattern, keep the Synced toggled enabled, and create the pattern
  4. Select 'Edit original' from the toolbar of the pattern that was inserted into the post
  5. For the heading, paragraph, image and button block, select each one individually, and in the advanced inspector tools choose 'Enable Overrides'. Give the blocks a name in the resulting dialog.
  6. Save the pattern and go back to the post
  7. Enter some content into the heading, paragraph, image and button with the pattern instance int he post
  8. Preview the post and ensure the content is correct on the frontend

This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

Copy link

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • The Plugin and Theme Directories cannot be accessed within Playground.
  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@talldan talldan marked this pull request as ready for review May 31, 2024 10:10
Copy link

github-actions bot commented May 31, 2024

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.

Core Committers: Use this line as a base for the props when committing in SVN:

Props talldanwp, petitphp, mukesh27, isabel_brison, kevin940726.

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

src/wp-includes/class-wp-block.php Outdated Show resolved Hide resolved
src/wp-includes/class-wp-block.php Outdated Show resolved Hide resolved
src/wp-includes/class-wp-block.php Outdated Show resolved Hide resolved
@talldan talldan force-pushed the add/default-attribute-support-for-block-bindings branch from 3faccb6 to 45b91d6 Compare June 3, 2024 02:47
Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

I can't really speak to the code as I'm not familiar with block bindings logic but this is working well for me in testing, both when creating a pattern from existing post content and creating one from scratch in the site editor.

$updated_bindings = array();

/*
* Build an binding array of all supported attributes.
Copy link
Contributor

Choose a reason for hiding this comment

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

Typo: "build a binding array"

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks, fixed in cbc99b5

Copy link
Member

@kevin940726 kevin940726 left a comment

Choose a reason for hiding this comment

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

Works well in my testing!

@tellthemachines
Copy link
Contributor

Committed in r58289.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants