plugin-icon

ECORP Internal Links

Turn chosen keywords into internal links automatically, with a per-post limit and strictly safe HTML handling.
Version
1.2.0
Last updated
Aug 3, 2026
ECORP Internal Links

ECORP Internal Links builds your internal linking silo for you. You define a list of keyword to URL rules once, and every matching keyword is turned into a link as your content is rendered. Your posts are never modified in the database: the plugin works on output only, so removing it removes every generated link.

What it does

  • Links each keyword on its first occurrence only, so a page never repeats the same link.
  • Enforces a global limit of automatically inserted links per post.
  • Never lets a post link to itself: a rule pointing at the page being displayed is skipped, and does not consume the per-post limit.
  • Optionally opens links in a new tab (target="_blank" plus rel="noopener").
  • Optionally marks inserted links as rel="nofollow".
  • Runs only on the post types you enable.

Where it will never insert a link

Correctness here matters more than coverage, so the matcher skips every context where an automatic link would be invalid or unwanted:

  • inside an existing <a> element, so links are never nested;
  • inside <h1> to <h6> headings;
  • inside <script>, <style>, <code>, <pre>, <kbd> and <samp>;
  • inside form controls such as <textarea>, <button>, <select>, <option> and <label>;
  • inside <iframe>, <svg>, <noscript> and <template>;
  • inside HTML comments;
  • inside any HTML attribute, including alt, title, src and href.

Built for real content

  • Matching is accent aware and case insensitive, and the original casing of the matched text is preserved in the anchor.
  • Word boundaries are Unicode aware: a rule for SEO never matches inside SEOquencer, and a rule for référencement never matches référencements.
  • Longer expressions win over shorter ones, so internal linking strategy is preferred over internal linking when both are defined.
  • Multi word keywords still match across a line break or a non breaking space.

Performance

Rendered output is stored in the WordPress object cache, keyed by a version number that is bumped whenever you save your settings. On a site with a persistent object cache the transformation runs once per post revision; without one, repeated the_content calls within the same request are still served from memory.

Developer filters

  • ecorp_il_should_process: decide per post whether automatic linking runs.
  • ecorp_il_filter_priority: change the the_content hook priority (default 20).
  • ecorp_il_protected_tags: adjust the list of protected elements.
  • ecorp_il_link_attributes: change the attributes of every inserted link.
  • ecorp_il_link_rel: change the rel values of every inserted link.
  • ecorp_il_cache_ttl: change the cache lifetime.
  • ecorp_il_selectable_post_types: change the post types offered in the settings screen.

This plugin is built and maintained by ECORP.

Freeon paid plans
Tested up to
WordPress 7.0.2
This plugin is available for download for your site.