-
Notifications
You must be signed in to change notification settings - Fork 805
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
Forms: Add unique IDs when multiple instances. #40998
base: trunk
Are you sure you want to change the base?
Conversation
Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.
Interested in more tips and information?
|
Thank you for your PR! When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:
This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖 The e2e test report can be found here. Please note that it can take a few minutes after the e2e tests checks are complete for the report to be available. Follow this PR Review Process:
Still unsure? Reach out in #jetpack-developers for guidance! Jetpack plugin: The Jetpack plugin has different release cadences depending on the platform:
If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack. |
One thing that might be worth considering, either for this PR or for follow-ups, is the ability to manually customize the unique form ID. If we allow for that, then it may also be worth adding the unique ID as an attribute to the form as well, assuming the ID could be set via the editor / inspector. I added a few rough notes about both of these under 'form reusability' in an issue here that could be helpful: https://github.com/Automattic/vulcan/issues/601 Perhaps thought that's something to consider for some time down the line, but wanted to mention it just in case. |
projects/packages/forms/tests/php/contact-form/test-class.contact-form.php
Outdated
Show resolved
Hide resolved
8e71c98
to
2f42b0d
Compare
I like this solution for simplicity, and particularly for backawrds compatibility (re: "First form will keep the existing id"). I think it's fine to merge this iteration. However, I think it has some weaknesses we need to address in future:
Can you double check this solution works also if some of the forms are inside reusable/synced patterns? |
if ( ! isset( $attributes['id'] ) ) { | ||
$attributes['id'] = ''; | ||
} | ||
$attributes['id'] = $attributes['id'] . '-' . ( count( self::$forms ) + 1 ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fine as is, but noting that wp_unique_id()
can be handy here.
Fixes: #33009
Currently, when forms are used multiple times on a single page, all instances share the same ID. This can cause issues with:
Before:
After:
Proposed changes:
self::$forms
countform-123-1
,form-123-2
)Other information:
Jetpack product discussion
Does this pull request change what data or activity we track or use?
Testing instructions: