Contextual Related Posts v4.3.0: Lazy loading, Cart Related Products, and more
Related posts are one of those features that visitors love, but PageSpeed reports don’t, since every extra query and every extra thumbnail add weight to the initial page load. The built-in caching has been one of the oldest features that I made available to the 50,000+ free and pro plugin users. But it doesn’t eliminate the first load issue.
With Contextual Related Posts Pro v4.3.0, I’ve tackled that head-on. This release also brings related products that show up in your WooCommerce cart, a keyword option for the blocks, smarter cache clearing, and a set of developer-facing improvements. Let’s get into the details.

Lazy load related posts (Pro)
The biggest addition in this release and my favorite.
Enable Lazy Load for related posts under the Performance tab, and the related posts are no longer part of the initial HTML. Instead, a lightweight placeholder sits on the page, and the actual posts are fetched via JavaScript only when they are about to enter the viewport.
The result is a faster initial page load. It also plays better with page caching plugins, since the related posts are rendered fresh on each request rather than frozen into the stored page. Your visitors notice nothing. Your PageSpeed score should.
This works across all display methods: content, shortcode, widget, and the Related Posts block. The configured options are preserved via a signed payload, so what loads lazily is exactly what would have rendered inline. The Query Loop block variation is rendered by WordPress core and is not lazy-loaded.
A couple of things to keep in mind. Search engines may not index the links when this is enabled, since crawlers won’t see them in the markup. And the feature is skipped on feeds and AMP pages, where JavaScript isn’t an option.
You can also deactivate it on a per-instance basis with lazy_load= "0" in the shortcode, or use the crp_lazy_load filter for finer control.
Learn more about lazy loading related posts.
Cart Related Products for WooCommerce (Pro)
This is a feature that Justin at webifySEOOpens in a new window suggested I look into. If you run a WooCommerce store with a free shipping threshold, you’ve seen carts sitting just below it. Cart-Related Products nudge those orders over the line.
When the cart subtotal is below the free shipping threshold, the plugin displays a grid of contextually related products on the cart page. Products are filtered to a price band anchored to the gap-to-free-shipping and ranked by CRP relevance, using the most expensive cart item as the source. Coupon discounts are correctly accounted for when calculating the gap.
You can configure the product count, the price upper-bound percentage, a custom heading, and the location on the cart page where the grid appears. Everything lives under the WooCommerce settings tab.
Find related posts by keyword in the block editor (Pro)
The post metabox has long allowed you to override the search with a custom keyword. I’ve now brought that same option to the block editor.
Both the Related Posts block and the CRP Query Loop block have a new Keyword setting. Enter a word or phrase, and the plugin will use it to find related posts instead of the title and content of the current post. The advanced algorithm honors the keyword on both the custom tables and native tables paths, so results stay consistent regardless of which setup you run.
Clear the cache when posts are trashed
This one is for everyone, free and Pro. Until now, trashing a post left stale entries behind: related posts lists would keep showing the trashed post with a broken link or missing thumbnail until the cache expired. That always felt wrong to me, so I fixed it properly.
A new Clear cache when a post is trashed or restored toggle under the Performance tab fixes that. When enabled, the entire CRP cache is flushed whenever a post is moved to Trash or restored from it. It’s off by default. Nothing changes unless you turn it on.
Control where the metabox appears (Pro)
A small addition, but I think a welcome one: a new setting lets you choose which post types display the Contextual Related Posts metabox when editing. If none are selected, the metabox shows on all public post types, same as before. Tidy edit screens on the post types that don’t need them.
For developers
I’ve made three changes worth knowing about if you build on top of the plugin.
Posts with equal relevance scores are now returned in a stable order. Post date and post ID act as tiebreakers after the relevance score, so repeated queries no longer shuffle tied results. Small change, big difference for debugging.
A new crp_pre_related_posts filter lets you short-circuit the output for all display methods. Return a non-null value, and it replaces the output entirely. I built the lazy-load feature for this same filter.
For Pro users, there’s also a new REST API endpoint, contextual-related-posts/v1/posts/<id>/html, which returns the rendered HTML. Display arguments are only honored when accompanied by a valid signature generated during a server-side render, so they can’t be abused to render arbitrary configurations.
Upgrade notes
I’ve made the upgrade as safe as possible. Both new Performance toggles are off by default, so your site behaves exactly as before until you opt in. Cart Related Products needs WooCommerce and its own enable toggle under the WooCommerce settings.
As always, test on a staging site first if you’ve heavily customized the plugin.
Wrapping up
Lazy loading has been one of the most requested performance features, and Cart Related Products opens up a genuinely useful path for store owners. If you hit any issues or have ideas for what should come next, the support forums and GitHub are the best places to reach me.

