Skip to content

fix(woocommerce): image handling in paginated block#4149

Merged
adekbadek merged 2 commits intotrunkfrom
fix/wc-images-perfmatters
Apr 6, 2026
Merged

fix(woocommerce): image handling in paginated block#4149
adekbadek merged 2 commits intotrunkfrom
fix/wc-images-perfmatters

Conversation

@adekbadek
Copy link
Copy Markdown
Member

@adekbadek adekbadek commented Aug 20, 2025

All Submissions:

Changes proposed in this Pull Request:

Fixes an issue where images in a WooCommerce block with pagination ("Hand-picked Products") had images not loaded when updating the page. This was caused by Perfmatters' optimisation, which was not handled by WC.

How to test the changes in this Pull Request:

  1. On trunk, make sure you have Perfmatters and WooCommerce active
  2. Add a Campaigns' prompt containing a paginated "Hand-picked Products" block. The pages of the pagination should all include at least two products with images
  3. Visit the front-end, observe that on pages other than the one loaded on page load, the images are empty (or only the first one is loaded)
  4. Switch to this branch, observe images loading fine when progressing in pagination

Other information:

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes, as applicable?
  • Have you successfully ran tests with your changes locally?

@adekbadek adekbadek added the [Status] Needs Review The issue or pull request needs to be reviewed label Aug 20, 2025
@adekbadek adekbadek requested a review from a team as a code owner August 20, 2025 09:27
Copy link
Copy Markdown
Member

@miguelpeixe miguelpeixe left a comment

Choose a reason for hiding this comment

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

I'm unsure if this change is having the intended effect.

In this branch or in trunk with Perfmatters, I can retrieve the thumbnail when changing pages, as long as I don't have a cached version before adding a thumbnail to the product.

If I navigate to a page with a product without a thumbnail, and set a thumbnail, it won't fetch it after navigating to the page again. There's no xhr/fetch request either, so I'm assuming there's some frontend cache at the WC block level.

@adekbadek
Copy link
Copy Markdown
Member Author

adekbadek commented Sep 2, 2025

I've re-tested locally and the setup is a bit more complicated. I've edited the testing steps.

@github-actions github-actions Bot added [Status] Approved The pull request has been reviewed and is ready to merge and removed [Status] Needs Review The issue or pull request needs to be reviewed labels Oct 8, 2025
@adekbadek adekbadek requested a review from Copilot April 6, 2026 08:03
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the Newspack Perfmatters integration defaults to prevent WooCommerce product thumbnails from being affected by Perfmatters lazyload behavior that can break images in paginated “Hand-picked Products” blocks.

Changes:

  • Adds attachment-woocommerce_thumbnail to Perfmatters lazy_loading_exclusions.
  • Deduplicates both lazyload exclusion lists using array_unique().

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread includes/plugins/class-perfmatters.php Outdated
Comment thread includes/plugins/class-perfmatters.php Outdated
Comment thread includes/plugins/class-perfmatters.php Outdated
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@adekbadek
Copy link
Copy Markdown
Member Author

Bypassing the changes-requested review since this was addressed and there was an approving review later.

@adekbadek adekbadek merged commit 1c91f6c into trunk Apr 6, 2026
7 checks passed
@adekbadek adekbadek deleted the fix/wc-images-perfmatters branch April 6, 2026 08:28
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 6, 2026

Hey @adekbadek, good job getting this PR merged! 🎉

Now, the needs-changelog label has been added to it.

Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label.

If it does, please add an entry to our shared document, with screenshots and testing instructions if applicable, then remove the label.

Thank you! ❤️

matticbot pushed a commit that referenced this pull request Apr 16, 2026
# [6.38.0-alpha.1](v6.37.0...v6.38.0-alpha.1) (2026-04-16)

### Bug Fixes

* `is_donor` read-only only on WooCommerce-backed donations ([1dde930](1dde930))
* **access-control:** fix incorrect class name ([#4638](#4638)) ([a7a7908](a7a7908))
* **access-control:** hide My Account group features if Memberships is still active ([#4650](#4650)) ([214fa0d](214fa0d))
* add object-level authorization to corrections REST endpoint ([#4643](#4643)) ([a39a62d](a39a62d))
* address false positives in subscription status alerts on My Account ([f7d6bb8](f7d6bb8))
* address false positives in subscription status alerts on My Account ([31c8313](31c8313))
* clear stored referrer data where referrer is none or local ([c7ef6f3](c7ef6f3))
* count `pending-cancel` by testing against our canonical constant ([2a1f85b](2a1f85b))
* count `pending-cancel` by testing against our canonical constant ([8906b64](8906b64))
* include products without children when reviewing active subscriptions ([d714f3c](d714f3c))
* include products without children when reviewing active subscriptions ([aae3da2](aae3da2))
* limit success and notice snackbar treatments to My Account page ([3b40bec](3b40bec))
* **my-account:** limit notice/success snackbar overrides to My Account ([49517c1](49517c1))
* normalize referrer data when comparing ([d377afb](d377afb))
* **reader-activation:** clear referrer data when none provided ([696012b](696012b))
* **reader-data:** make is_donor read-only only when platform has server-side tracking ([92b0d34](92b0d34))
* update docblock to reflect simple product support ([ea1f03e](ea1f03e))
* update docblock to reflect simple product support ([ba14f85](ba14f85))
* **woocommerce:** image handling in paginated block ([#4149](#4149)) ([1c91f6c](1c91f6c))

### Features

* **access-control:** advanced settings for RSS content restriction ([#4613](#4613)) ([85aa560](85aa560))
* **access-control:** update default patterns ([#4569](#4569)) ([7f9a6c9](7f9a6c9))
* add filter for future integrations to self-declare server-side (secure?) donor tracking ([76e40fc](76e40fc))
* add README.md for the Overlay Block ([#4651](#4651)) ([6d7de6e](6d7de6e))
* **advertising:** replace placements UI with inline expandable cards ([#4625](#4625)) ([e5de003](e5de003))
* **block-theme:** add overlay block for the block theme ([#4578](#4578)) ([af1e4b9](af1e4b9))
* **components:** update CardFeature button size and variant ([#4609](#4609)) ([1d03d4c](1d03d4c))
* **content-gate:** add per-block access control for Group, Stack, and Row blocks ([#4646](#4646)) ([5bdf458](5bdf458))
* **content-gate:** add POST method for external IP access checks ([#4598](#4598)) ([36bfeea](36bfeea))
* **google-site-kit:** enable custom GA frontend params by default ([#4664](#4664)) ([19830ce](19830ce))
* **handoff:** add URL-based handoff with customizable banner text ([#4603](#4603)) ([be59c68](be59c68))
* **integrations:** add My Account menu hook to integration abstraction ([#4640](#4640)) ([4ef2c91](4ef2c91))
* **integrations:** add subscription and donation metadata ([#4597](#4597)) ([ca928f8](ca928f8))
* **integrations:** implement profile metadata ([#4624](#4624)) ([b1daf85](b1daf85))
* make it easier to do "Block until consent given" setups in Complianz and improve blocking ([#4549](#4549)) ([44dda72](44dda72))
* reader activation segments ([#4604](#4604)) ([3821fed](3821fed))
* **reader-data:** add engagement fields ([#4594](#4594)) ([1cba4ef](1cba4ef))
* **reader-data:** store sync reconciliation ([#4633](#4633)) ([69bdda4](69bdda4))
* require reader to set name when commenting ([#4647](#4647)) ([db5ad73](db5ad73))
* session hydration ([#4618](#4618)) ([665b152](665b152))

### Reverts

* address false positives in subscription status alerts on My Account ([9d203b0](9d203b0))
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 6.38.0-alpha.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

needs-changelog [Status] Approved The pull request has been reviewed and is ready to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants