Interactivity API: Make class WP_Interactivity_API minimally extensible - #13343
Interactivity API: Make class WP_Interactivity_API minimally extensible#13343nickchomey wants to merge 1 commit into
Conversation
|
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 Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Test using WordPress PlaygroundThe 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
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
b2de24e to
96827f0
Compare
Trac ticket: https://core.trac.wordpress.org/ticket/65757#comment:19
As per the discussion in the trac ticet, this PR aims to make the Interactivity API's
WP_Interactivity_APIclass - used for server side processing of directives - minimally extensible.Removing
finalfrom the class is the most minimal change that needs to be made to achieve this goal, without changing the private and protected status of the various properties and methods. But the concern still remains that even if someone wrote their entirely own class rather than override the methods/properties, it would still lock the API into a public contract.So, this PR implements a pattern that is used in Gutenberg, and in the
interactivitypackage in particular: an explicit developer opt-in when they are using an unstable/internal/private API. This would be achieved by defining aWP_INTERACTIVITY_ALLOW_PRIVATE_APIconst and also using thewp_interactivity_instancefilter to replace the class instance with one that extends it.Feedback on the possibility of this approach would be quite welcomed.
Use of AI Tools
AI assistance: No
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.