WP Manifestindependent plugin directory
manifest / seo / smarty-auto-internal-linker

SM - Auto Internal Linker

Automatically links predefined keywords/phrases in news articles to related posts within the site.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/mnestorov/smarty-auto-internal-linker/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Overview

SM – Auto Internal Linker is a lightweight WordPress plugin that automatically turns the first occurrences of predefined keywords or phrases inside your posts into bold, SEO-friendly internal links. Originally built for high-throughput news sites, it now ships with Polylang-aware language scoping, so every keyword can link only inside the language you choose.


Description

The plugin watches every post/page on render, finds matching keywords in the body (never in headings, quotes, or existing anchors) and injects an <a> element that :

  • points to the URL you defined,
  • inherits the exact capitalisation the reader sees (e.g. NFT, nft or Nft),
  • carries an optional nofollow attribute,
  • is styled with the class .smarty-aul-link (bold by default).

The admin screen lets editors manage keywords, per-keyword link limits and language with a friendly UI. An hourly WP-Cron task back-fills links into older posts so your archive stays fresh as new keywords arrive.


Features

Category What you get
Smart linking Case-insensitive matching with word boundaries, preserves original casing in output.
Per-keyword cap Each keyword obeys its own max-links-per-post value (1 – 3).
Language scope New Language selector (Any / bg / en …). Keywords link only in the chosen Polylang language.
Scope control Skips headings <h1-h6>, blockquotes, existing <a> tags.
Admin UI Add / edit / delete keywords, set dofollow / nofollow, max links, all from WP Dashboard.
Cron for old posts Hourly routine updates 20 older posts (older than a week) with fresh links.
Bold by default Injected links get font-weight:bold; via a tiny inline stylesheet (easily override).
Performance MySQL table + 24 h transient cache; zero queries on most page loads.
No classes, pure functions 100 % procedural PHP with smarty_aul_ prefix and function_exists guards.
I18n-ready Text domain smarty-auto-internal-linker; ready for translation files in /languages.

Installation

  1. Download the plugin
    grab smarty-auto-internal-linker.php from the repo’s latest release.

  2. Upload & activate
    Plugins → Add New → Upload Plugin → choose the file → Install → Activate.

  3. (First-run)
    On activation the plugin will:

    • create the table {$wpdb->prefix}smarty_aul_dictionary_keywords,
    • schedule the hourly WP-Cron event.
  4. Done.
    A new top-level menu “Auto Links” appears in the admin sidebar.


Usage

  1. Add a keyword
    Auto Links → Add Keyword → fill in the phrase, target URL, choose max links/post and rel.

  2. Edit / delete
    Click Edit next to an entry, update the fields and click Update Keyword.
    Or click Delete to remove it entirely.

  3. Styling
    Links are bold by default via .smarty-aul-link. Override in your theme:

    
    .smarty-aul-link{font-weight:600;color:#1e90ff;text-decoration:none;}
  4. Testing View any single post containing the phrase – on the first render you’ll see the new link.

Frequently Asked Questions

Q: The plugin isn’t linking anything. What’s wrong?

A: Make sure the keyword exists exactly (case doesn’t matter but spaces do). Ensure you haven’t hit the global (3) or per-keyword cap.

Q: Can I link inside custom post types?

A: Change the early guard in smarty_aul_filter_content() to add your CPT condition.

Q: How do I disable the bold style?

A: Either dequeue the inline style:

add_action( 'wp_enqueue_scripts', function(){
    wp_dequeue_style( 'smarty-aul-inline' );
}, 20 );

or override .smarty-aul-link{font-weight:normal;} in your theme CSS.

Q: Will it slow my site down?

A: No – the dictionary is cached for 24 h and the DOM manipulation runs only on single post views.

Q: How can I import 500 keywords at once?

A: Insert rows directly into wp_smarty_aul_dictionary_keywords (or use WP-CLI) and then delete_transient( 'smarty_aul_dictionary_cache' );.

Translation

This plugin is translation-ready. Add translations to the languages directory.

Changelog

For a detailed list of changes and updates made to this project, please refer to our Changelog.


License

This project is released under the GPL-2.0+ License.