

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.
That separation runs all the way through the architecture:
Content Provider → Relation Engine → Filters / Exclusions → Ranking → Cache → Placement Engine → Layout Renderer → Template
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:
Displays are ordered by a priority value, can be activated or deactivated individually, duplicated, and exported to JSON for another site.
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:
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.
24 product, shop, cart, checkout and order hooks:
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.
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.
A display runs only where you want it:
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.
Layout controls the structure, the template controls the visual DNA, and the two are independent.
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.
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.
[smart_related id="5"]<?php srpp_the_related_content( 5 ); ?> (the older smart_related_content() still works)Clear the recommendation cache, reset statistics, and export or import displays as JSON to move a configuration between staging and production.
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.
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.