Stunning Related for Posts, Products, Pages and widgets
Stunning Related for Posts, Products, Pages and widgets

Stunning Related for Posts, Products, Pages and widgets

3.4/5 (5 ratings) 80 active installs Updated Sep 1, 2026
The template library.

The template library.

Most related-content plugins give you one global settings page and one block at the bottom of the article. This one is built around a different idea: you create Displays, and every display answers three separate questions.

  • WHAT should be shown — content selection.
  • WHERE should it appear — the placement engine.
  • HOW should it look — layout, template and styling.

That separation runs all the way through the architecture:

Content Provider → Relation Engine → Filters / Exclusions → Ranking → Cache → Placement Engine → Layout Renderer → Template

Unlimited independent displays

One article can run several displays at once, each with its own content rules, position, design and priority — and the same item is never repeated twice on the page:

  • “Read Next” — 1 related post after paragraph 4.
  • “You May Also Like” — 3 posts after 65% of the article.
  • “More From This Category” — 6 posts in 3 columns at the end.

Displays are ordered by a priority value, can be activated or deactivated individually, duplicated, and exported to JSON for another site.

Weighted relation engine

Instead of “same category”, candidates are scored and ranked:

related_score = primary category + categories + tags + custom taxonomies + product attributes + same author + recency

Every weight is adjustable from 0 to 100, so two posts sharing a category and three tags naturally outrank one sharing only a category. The primary category set by Yoast SEO or Rank Math is recognised and weighted separately. A Basic engine mode is included when you want plain term matching where every shared term counts the same.

Other content controls:

  • Related by — choose exactly which taxonomies create relatedness.
  • Recency window — how recent an item must be to earn the recency bonus (0–3650 days).
  • Fallback when relationships are thin — most recent, random, most-commented, or simply show fewer items.
  • Order — relevance score, newest first, recently updated, title AZ, or random.
  • Total items — 1 to 60, independent of the column count.

Selection modes

  • Automatic — the engine chooses.
  • Manual — only your picks, in your order.
  • Manual + automatic — your picks first, the remaining slots filled by the engine.

HTML-aware in-content placement

In-content insertion is resolved with a DOM pass. A block is only ever placed between top-level elements, so lists, tables, blockquotes, galleries and shortcodes are never split — content is never cut on </p> with a string function.

Available positions: before content, after title, after content, after paragraph X, before paragraph X, after X% of the article, middle of the article, before the first heading, after the first heading, before the last heading, before the conclusion, every X paragraphs, and every X words — the repeating positions with a maximum block count.

WooCommerce placements

24 product, shop, cart, checkout and order hooks:

  • Product page — before product, before/after title, after rating, after price, before/after short description, before/after variations, before/after Add to Cart, after product summary, before/after product tabs, after product page.
  • Shop and archives — before or after the product loop.
  • Cart — before cart, cart collaterals, after cart, empty cart.
  • Checkout — before or after the checkout form.
  • Order received — after the order.

Cart, checkout and order-received recommendations are derived from what is actually in the cart or in the completed order, and never recommend a product the customer already has.

Cross-content recommendations

The engine is not hard-coded to post post. Set a source and a target and a blog article can recommend products, while a product page recommends the guides that explain it. Cross-content matching links the two by matching term slugs across the taxonomies of the target post types.

Display conditions

A display runs only where you want it:

  • Post types it is generated from.
  • Taxonomy rules — “only when the post has …” and “never when the post has …”, combined with AND or OR logic.
  • Specific items to include or exclude by ID.
  • WooCommerce product price range.
  • Visitor state — everyone, logged-in only, or logged-out only.

Per-post overrides

Inside the post or product editor, a Related Content metabox can override the global behaviour for that item: use global settings, automatic, custom only, custom first then automatic, or disabled entirely — plus its own always-recommend and never-recommend lists with an AJAX search picker.

Layouts, templates and responsive columns

Layout controls the structure, the template controls the visual DNA, and the two are independent.

  • 8 layouts — grid, list, inline, carousel, masonry, compact, single recommendation, horizontal cards.
  • 12 templates — 01 Minimal, 02 Editorial, 03 Image Card, 04 Horizontal, 05 Magazine Grid, 06 Numbered, 07 Glass Cards, 08 Featured Recommendation, 09 Compact Pills, 10 Product Cards, 11 Product Minimal, 12 Carousel.
  • Desktop / tablet / mobile columns are core settings, not advanced ones, and the item count is separate from the column count.
  • Adjustable grid gap.

Design controls

  • Heading text, tag (H2–H5, div, span) and alignment.
  • Fields to show: image, title, excerpt, category or term, date, author, reading time, read-more button — plus price, rating, Add to Cart and sale badge when WooCommerce is active. Fields a template does not support are ignored.
  • Excerpt length in words, image ratio (16:9, 4:3, 3:2, 1:1, 3:4, 2:3 or original), link target and button text.
  • Customize template: accent, card background, title, text, meta and border colours; corner radius, image radius, card padding, title size, text size; and shadow depth. Everything is emitted as CSS custom properties on the block wrapper, so nothing leaks into the rest of the page.

Live preview

The editor renders a real preview from real content on your site while you work, with desktop, tablet and mobile device toggles, a full-screen preview overlay and a template navigator for stepping through all 12 templates without leaving the screen.

Performance

  • Resolved recommendation IDs are cached per post and regenerated automatically when the post, its terms or the display change. Cache lifetime is selectable per display: disabled, 1 hour, 1 day, 1 week, 1 month.
  • Scoring happens in one grouped SQL query, not one query per candidate.
  • Nothing is enqueued globally. The stylesheet loads only when a display will actually render, and the carousel script only when a carousel is really on the page.
  • Optional lazy loading for recommendation images.

Analytics

Impressions and clicks are aggregated per day, so you can see click-through rate per template, per placement, per display and per recommended item — which recommendation strategy actually works, not just which one looks nice. Aggregated counters only: no cookies and no personal data. A retention window (0–1825 days) prunes old rows automatically.

Manual placement

  • Shortcode: [smart_related id="5"]
  • Gutenberg block: Related Content
  • Widget: Related Content (Stunning Related)
  • PHP: <?php srpp_the_related_content( 5 ); ?> (the older smart_related_content() still works)

Tools

Clear the recommendation cache, reset statistics, and export or import displays as JSON to move a configuration between staging and production.

Exclusions

Never recommend the current item, password-protected content, private content, content marked noindex by Yoast SEO or Rank Math, or out-of-stock products — plus excluded terms, excluded authors, excluded item IDs, and a guard against showing the same item twice on one page.

Privacy

The plugin sends nothing to any external service. Analytics rows contain a display ID, a source post ID, a target post ID, a template key, a placement key, a date and two counters — no IP addresses, no cookies, no visitor identifiers.