-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Pagination Numbers: Add data-wp-key
to pagination numbers if enhanced pagination is enabled
#58189
Pagination Numbers: Add data-wp-key
to pagination numbers if enhanced pagination is enabled
#58189
Conversation
ab761aa
to
3255e10
Compare
986a90b
to
f61a275
Compare
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 If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
) ) { | ||
$p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); | ||
if ( null === $p->get_attribute( 'data-wp-key' ) ) { | ||
$p->set_attribute( 'data-wp-key', 'index-' . $tag_index++ ); |
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.
Why don't we use the $page variable instead of creating our own tag_index?
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.
In this case, looking at the code:
$page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page';
$page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ];
As far as I can remember, the queryId only appears when there is more than one query loop in the page. So, in most cases, $page
will always return 1, having this HTML
With the same key, the fix won't work.
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.
It seems to be working fine for me 👍
I just left a small comment and I don't fully understand the implications of using data-wp-key
* trunk: (273 commits) Remove preffered style variations legacy support (#58930) Style theme variations: add property extraction and merge utils (#58803) Migrate `change-detection` to Playwright (#58767) Update Changelog for 17.6.6 Docs: Clarify the status of the wp-block-styles theme support, and its intent (#58915) Use `data_wp_context` helper in core blocks and remove `data-wp-interactive` object (#58943) Try double enter for details block. (#58903) Template revisions API: move from experimental to compat/6.4 (#58920) Editor: Remove inline toolbar preference (#58945) Clean up link control CSS. (#58934) Font Library: Show error message when no fonts found to install (#58914) Block Bindings: lock editing of blocks by default (#58787) Editor: Remove the 'all' rendering mode (#58935) Pagination Numbers: Add `data-wp-key` to pagination numbers if enhanced pagination is enabled (#58189) Close link preview if collapsed selection when creating link (#58896) Fix incorrect useAnchor positioning when switching from virtual to rich text elements (#58900) Upgrade Floating UI packages, fix nested iframe positioning bug (#58932) Site editor: fix start patterns store selector (#58813) Revert "Rich text: pad multiple spaces through en/em replacement (#56341)" (#58792) Documentation: Clarify the performance reference commit and how to pick it (#58927) ...
…ed pagination is enabled (#58189) * Add `data-wp-key` to pagination numbers * Use tag index as the `data-wp-key` value Co-authored-by: DAreRodz <darerodz@git.wordpress.org> Co-authored-by: SantosGuillamot <santosguillamot@git.wordpress.org> Co-authored-by: c4rl0sbr4v0 <cbravobernal@git.wordpress.org>
I just cherry-picked this PR to the backports/beta1 branch to get it included in the next release: f7e9fdf |
…ed pagination is enabled (#58189) * Add `data-wp-key` to pagination numbers * Use tag index as the `data-wp-key` value Co-authored-by: DAreRodz <darerodz@git.wordpress.org> Co-authored-by: SantosGuillamot <santosguillamot@git.wordpress.org> Co-authored-by: c4rl0sbr4v0 <cbravobernal@git.wordpress.org>
…ed pagination is enabled (#58189) * Add `data-wp-key` to pagination numbers * Use tag index as the `data-wp-key` value Co-authored-by: DAreRodz <darerodz@git.wordpress.org> Co-authored-by: SantosGuillamot <santosguillamot@git.wordpress.org> Co-authored-by: c4rl0sbr4v0 <cbravobernal@git.wordpress.org>
What?
Adds the
data-wp-key
directive to the elements rendered by the Pagination Numbers block to prevent issues after client-side navigations. This is done only when the "enhanced pagination" is enabled.Why?
Currently, after a couple of navigations, numbers start to turn into ellipsis characters due to the preact library having problems reconciling the new HTML with the current one.
How?
Using each tag's position index to generate the key instead of a unique ID for each link. I know it's not appropriate to use
data-wp-key
, but it seems to be the only way to prevent text nodes between numbers from disappearing. If those are removed, the numbers "collapse" as there is no space in between. (Preact seems to remove the text nodes in between while re-ordering tags as text nodes don't have any key).Screen.Recording.2024-02-12.at.15.27.59.mov
Screen.Recording.2024-02-12.at.15.19.19.mov
Screen.Recording.2024-02-12.at.15.20.00.mov
Testing Instructions