Title: Magic Linking – Internal Links
Author: Carrero
Published: <strong>06. listopada 2026.</strong>
Last modified: 07. listopada 2026.

---

Pretraga dodataka

![](https://ps.w.org/magic-linking/assets/banner-772x250.png?rev=3731540)

![](https://ps.w.org/magic-linking/assets/icon.svg?rev=3731540)

# Magic Linking – Internal Links

 Od [Carrero](https://profiles.wordpress.org/dcarrero/)

[Preuzmi](https://downloads.wordpress.org/plugin/magic-linking.0.10.0.zip)

 * [Detalji](https://hr.wordpress.org/plugins/magic-linking/#description)
 * [Recenzije](https://hr.wordpress.org/plugins/magic-linking/#reviews)
 *  [Instalacija](https://hr.wordpress.org/plugins/magic-linking/#installation)
 * [Razvoj](https://hr.wordpress.org/plugins/magic-linking/#developers)

 [Podrška](https://wordpress.org/support/plugin/magic-linking/)

## Opis

Magic Linking suggests internal links while you write, adds the one you choose without
touching anything else, and keeps a history so you can undo it. It also reports 
which of your entries are orphans, under-linked, over-linked or have broken internal
links.

It works entirely on your server, with no artificial intelligence, no account, no
key, no external service and no limits.

**In the editor**

 * **Outbound suggestions**: a Magic Linking panel in the block editor (and a box
   in the classic editor) proposes phrases of the text you are writing that could
   link to other entries of your site. Each suggestion shows the phrase with the
   anchor text highlighted in the editor, the destination and the reason.
 * **One click to link**: press _Link_ and the link is added in the editor itself,
   on that phrase only. It is part of your unsaved changes until you save, and you
   can undo it with the _Undo_ button of the card or with the editor’s own undo.
 * **Inbound suggestions**: the same panel lists other entries whose text mentions
   the one you are editing and could link to it. Pressing _Link_ writes the link
   in that other entry, see “How and when it changes your content”.
 * Only the entries and block types where a link can be inserted safely are proposed.
   Headings, quotes and tables are left alone unless a developer allows them with
   a filter.

**How and when it changes your content**

 * Nothing is changed until you press _Link_ on a suggestion. There are no automatic
   changes and no background rewriting.
 * For the entry you have open, the link is inserted in the editor; saving is up
   to you.
 * For inbound suggestions, the link is written into the other entry on the server.
   Before saving, Magic Linking checks that the rest of that entry stays exactly
   as it was: only the link is added. If the check fails, it writes nothing and 
   tells you why. WordPress keeps a revision of the entry as usual.
 * Every change is recorded in **History**, where you can undo it and redo it. Undo
   removes only that link; if the text around it was edited since, it tells you 
   instead of guessing.
 * An entry that is open in someone’s editor is never modified from the server.
 * Links already written in your content are never removed or rewritten, except 
   to undo a link Magic Linking added.

**History**

 * Every link added from an inbound suggestion is listed with who added it, when,
   where and the anchor text.
 * Undo and redo from the screen or with WP-CLI. A large group is undone in the 
   background.
 * The history is kept 90 days by default; you can choose 30 days, a year or forever.

**Report**

 * **Orphan pages**: entries that no other entry links to.
 * **Under-linked pages**: entries with some inbound links, but fewer than you consider
   enough (2 by default, you can change it).
 * **Over-linked pages**: entries with more internal links than one for every 100
   words (you can change that too). A short text may always have one link.
 * **Broken internal links**: links to an entry that is in the trash, is a draft
   or private, or does not exist. The complete list, with the anchor text, the reason
   and a link to edit the entry.
 * Numbers for every entry: inbound, internal outbound, external and broken links.
 * Filters, search by title, sorting, pagination and **CSV export** of the view 
   you are looking at.

**Also**

 * **WP-CLI**: analyse the site, print reports and manage the history from the terminal.
 * **Multilingual**: the language of each entry comes from WPML, Polylang or, if
   you use neither, from the site language. Suggestions never link entries of different
   languages.
 * **Made for big sites**: the analysis and the index of suggestions are built in
   the background in small batches with Action Scheduler (bundled), and every entry
   is updated when you save it. Suggestions for an entry are calculated in a few
   milliseconds even with thousands of entries.
 * **Light**: no scripts, no styles and no database queries from this plugin on 
   your public pages.
 * **Private**: no external services, no telemetry, no cookies, no email requests,
   no notices outside its own screens.

**What it does not do (in this version)**

 * It does not use artificial intelligence. When it does, it will be only through
   the AI client and the _Connectors_ screen that WordPress itself provides, never
   with keys or credit of its own, and always optional.
 * It does not check links over the network: a link is “broken” when it points to
   an address on your own site that leads nowhere, according to WordPress. Links
   to other sites are counted, not checked.
 * It does not suggest or add links automatically while you are away. Every link
   is a click of yours.

**How links are counted**

 * Only the links written inside the content of each entry are counted. Links in
   menus, widgets, theme templates or blocks that are pulled from somewhere else
   are not, so your home page or a page that is only linked from the menu can appear
   as an orphan.
 * Content that a page builder keeps outside the normal post content is not read.
   If your builder saves rendered HTML in the post content, it is read.
 * Inbound = how many different entries link to this one, counting only links that
   work. Outbound = internal links to other pages of your site; every appearance
   counts. A link to the same entry, to a file (uploads, PDF, images) or to `mailto:`
   and `tel:` addresses is not counted.
 * Category, tag, author, date and search pages, the home page and feeds are valid
   destinations and are never reported as broken.
 * Tracking parameters (`utm_*`, `gclid`, `fbclid`…) and anchors (`#…`) are ignored
   when matching a link to an entry.

**Roadmap**

Next: several phrases per destination and adjustable anchor text, automatic rules,
fixing broken links one by one and, optionally, help from the AI connectors that
WordPress already provides. None of that is in this version.

### Support and documentation

Documentation and news: https://magiclinking.com

Questions and bug reports: use the support forum of this plugin on WordPress.org.

### External services

Magic Linking does not connect to any external service.

### Privacy

Magic Linking does not collect, store or send personal data. It stores, in your 
database, the addresses and anchor texts of the internal links found in your own
content, a word index of your entries used for suggestions, counts per entry and
a history of the links it has added (which user, when, which entry and the text 
of the paragraph that changed, so it can be undone). Suggestions you dismiss are
not stored. It does not set cookies.

### Third-party libraries

 * Action Scheduler (WooCommerce) 4.2.x, GPL-3.0-or-later, bundled in `vendor/woocommerce/
   action-scheduler/`. Used to run the analysis and the index in the background.

## Snimke zaslona

[⌊Outbound suggestions in the block editor: each card shows the destination and 
the reason, and the anchor text is highlighted in the text.⌉⌊Outbound suggestions
in the block editor: each card shows the destination and the reason, and the anchor
text is highlighted in the text.⌉[

Outbound suggestions in the block editor: each card shows the destination and the
reason, and the anchor text is highlighted in the text.

[⌊A link added with one click, with the Undo button on the card.⌉⌊A link added with
one click, with the Undo button on the card.⌉[

A link added with one click, with the Undo button on the card.

[⌊Inbound suggestions: other entries that could link to the one you are editing.⌉⌊
Inbound suggestions: other entries that could link to the one you are editing.⌉[

Inbound suggestions: other entries that could link to the one you are editing.

[⌊History: every link added from the server, with undo and redo.⌉⌊History: every
link added from the server, with undo and redo.⌉[

History: every link added from the server, with undo and redo.

[⌊The report: totals for analyzed entries, orphans, internal links and broken links,
with filters, search and sorting.⌉⌊The report: totals for analyzed entries, orphans,
internal links and broken links, with filters, search and sorting.⌉[

The report: totals for analyzed entries, orphans, internal links and broken links,
with filters, search and sorting.

[⌊Settings: content types, thresholds, history retention and maintenance.⌉⌊Settings:
content types, thresholds, history retention and maintenance.⌉[

Settings: content types, thresholds, history retention and maintenance.

## Instalacija

 1. Install the plugin and activate it.
 2. Go to **Magic Linking** in the admin sidebar and press **Analyze my site**. Nothing
    is analysed until you do it. The first time it also builds the index used for suggestions,
    in the background.
 3. Open any post or page. In the block editor, open the **Magic Linking** panel from
    the top bar (or the three dots menu); in the classic editor, use the **Magic Linking**
    box.
 4. Read the suggestions and press **Link** on the ones you like.
 5. For the site-wide picture, use the filters _Orphans_, _Under-linked_, _Over-linked_
    and _With broken links_ in the report, or open _Broken links_ to fix them one by
    one.

From the terminal: `wp magic-linking index` analyses the site and `wp magic-linking
report --filter=orphans --format=csv` prints the orphan pages as CSV.

## Pitanja i odgovori

### Does it change my posts or pages?

Only when you press _Link_ on a suggestion, and only by adding that link.

 * Outbound suggestions (for the entry you are editing): the link is inserted in
   the editor itself. You save the entry when you want, as with any other change.
 * Inbound suggestions (links from other entries to this one): the link is written
   into the other entry on the server. The rest of that entry must stay identical,
   byte for byte, or nothing is written. WordPress creates a revision, and the change
   is listed in History, where you can undo it.
 * It never modifies an entry that is open in an editor, and it never edits, removes
   or rewrites links you already had.

Everything else (the report, the index, the settings) only reads your content and
writes to its own tables.

### How do I undo a link?

Right after adding it, press _Undo_ on the card. Later, open **Magic Linking > History**
and undo it there. You can also redo it. If the text around the link has been edited
since, Magic Linking tells you instead of changing anything it cannot be sure about.

### Does it need AI, an API key or an account?

No. It works entirely on your server, with no key, no account and no credit. It 
does not use artificial intelligence in this version.

### Does it send my content anywhere?

No. It does not connect to any external service.

### Why does the panel say there are no suggestions?

The suggestions come from the index of your site, which is built in the background
after you press _Analyze my site_. Until it is ready the panel says so. Also, suggestions
need text: a very short entry has little to suggest, and entries in another language,
drafts, private entries and password-protected ones are never proposed as destinations.

### Why can’t I link from this phrase?

Links are only inserted in paragraphs, lists and similar blocks, and never inside
an existing link. A developer can allow more block types with `magiclinking_insertable_blocks`.

### Does it work in the classic editor?

Yes, with a Magic Linking box. Links are inserted in the _Visual_ tab; in _Text_
the box explains how to switch.

### Why does my home page (or another page) appear as an orphan?

Because it is not linked from the content of any other entry. If it is linked from
your menu, the menu is not counted. See “How links are counted”.

### Why is a link not listed as broken if the page is really gone?

A link is reported when it points to an entry in the trash, unpublished or private,
or to an address of your site that WordPress does not recognise. If a redirect plugin
sends the old address elsewhere, the link may still work for your visitors. Developers
can tell Magic Linking about redirects with the `magiclinking_resolve_link` filter.

### Does it work with WPML or Polylang?

Yes. It records the language of every entry, never suggests a link between two languages
and, when WPML or Polylang is active (or the analysis finds more than one language),
shows it in the report, lets you filter by it and adds it to the CSV. On a single-
language site those columns are hidden.

### How long does the first analysis take?

A few seconds for a small site; thousands of entries per minute on ordinary hosting.
It runs in the background; you can keep working and watch the progress on the screen.

### The analysis does not move.

It needs Action Scheduler to run, which WordPress triggers with WP-Cron. On sites
with very little traffic, use a system cron, or run `wp action-scheduler run --group
=magic-linking`, or analyse directly from the terminal with `wp magic-linking index`.

### How do I analyze only what changed?

Press “Analyze changes” in the report (or run `wp magic-linking index`). It goes
through every entry but skips the ones whose content has not changed since the last
analysis, and tells you how many were new or modified. Entries are also analysed
again automatically when you save them.

### How do I analyze the whole site again from scratch?

Go to Magic Linking > Settings, open the “Maintenance” section and press “Analyze
everything again from scratch” (or run `wp magic-linking index --force`). It asks
you to confirm and then runs in the background, even for entries that have not changed.
It never changes your content.

### What happens when I delete the plugin?

By default your data is kept. If you tick “Delete all Magic Linking data when the
plugin is deleted” in the settings, its tables (index, links, history), processes,
settings and metadata are removed. The links already written in your content stay
where they are; your content is never touched.

### Is it multisite compatible?

Each site of a network has its own report, history and settings.

### Which hooks can developers use?

 * `magiclinking_link_inserted`: action that runs after a link has been inserted
   from the server.
 * `magiclinking_batch_undone`: action that runs after a group of links has been
   undone.
 * `magiclinking_insertable_blocks`: filter for the block types where links can 
   be inserted.
 * `magiclinking_post_lock_timeout`: filter for the seconds to wait when another
   insertion or undo is writing the same entry.
 * `magiclinking_undo_sync_limit`: filter for how many changes are undone at once
   before the rest goes to the background.
 * `magiclinking_post_language`: set the language of an entry.
 * `magiclinking_internal_hosts`: extra hosts that count as your site.
 * `magiclinking_resolve_link`: say where an internal address leads.
 * `magiclinking_post_html`: add HTML that a builder keeps outside the content.
 * `magiclinking_is_multilingual`: tell the plugin whether the site is multilingual.
 * `magiclinking_batch_max_entries` and `magiclinking_batch_time_budget`: size and
   time of each background batch.

## Recenzije

Nema recenzija za ovaj dodatak.

## Suradnici i Programeri

“Magic Linking – Internal Links” je softver otvorenog koda. Sljedeće osobe su doprinijele
ovom dodatku.

Suradnici

 *   [ Carrero ](https://profiles.wordpress.org/dcarrero/)

[Prevedite “Magic Linking – Internal Links” na svoj jezik.](https://translate.wordpress.org/projects/wp-plugins/magic-linking)

### Zainteresirani ste za razvoj?

[Pregledajte kôd](https://plugins.trac.wordpress.org/browser/magic-linking/), pogledajte
[SVN spremište](https://plugins.svn.wordpress.org/magic-linking/)ili se pretplatite
na [dnevnik razvoja](https://plugins.trac.wordpress.org/log/magic-linking/) od [RSS](https://plugins.trac.wordpress.org/log/magic-linking/?limit=100&mode=stop_on_copy&format=rss).

## Dnevnik promjena

#### 0.10.0

 * New: link suggestions in the block editor and in the classic editor. A Magic 
   Linking panel proposes phrases of your text that can link to other entries, with
   the anchor highlighted and the reason.
 * New: add a link with one click. In the editor it is inserted in the editor itself,
   only on that phrase.
 * New: inbound suggestions: link to the entry you are editing from other entries
   that mention it. The link is written in the other entry after checking that nothing
   else in it changes, and WordPress keeps a revision.
 * New: History with undo and redo for every link added from the server, with a 
   configurable retention (30 days, 90 days, a year or forever). Large groups are
   undone in the background.
 * New: the index used for suggestions is stored in the database and built in the
   background. After updating from an earlier version it is built automatically,
   without you having to analyze again; no suggestions are shown until it is ready.
 * Improved: cleaner anchor text. Suggested phrases no longer start or end with 
   small words such as “the”, “of”, “el” or “de”, and the reasons shown with each
   suggestion are cleaner too.
 * New: WP-CLI `wp magic-linking history` (list, undo, redo and purge).
 * New: new filters and actions for developers (see the FAQ).
 * Improved: contrast of the secondary buttons in WordPress 6.9.

#### 0.9.2

 * Table schema rewritten without callable interpolation inside SQL strings (the
   generated SQL is identical).
 * The package no longer contains development folders (such as `.claude`); the build
   now fails if any hidden or development file gets into the ZIP.
 * Requirements (PHP 8.1, WordPress 6.9, mbstring) are checked before anything else
   loads. On activation without them the plugin deactivates itself with an explanatory
   message instead of failing.
 * Added unit tests for the schema statements.

#### 0.9.1

 * Readme: the bundled Action Scheduler is 4.2.x (the third-party libraries section
   still said 3.9.x).
 * No functional changes.

#### 0.9.0

 * First public version: “Analyze changes” (skips unchanged entries) and “Analyze
   everything again from scratch”, report of orphan, under-linked and over-linked
   entries, complete list of broken internal links, CSV export, WP-CLI commands 
   and settings. It never modifies content.
 * Requires WordPress 6.9 or later and bundles Action Scheduler 4.2.0.

## Meta

 *  Version **0.10.0**
 *  Zadnje ažuriranje **prije 15 sati**
 *  Aktivnih instalacija **Manje od 10**
 *  WordPress inačica ** 6.9 ili viša **
 *  Testirano do **7.1.3**
 *  PHP inačica ** 8.1 ili viša **
 *  Language
 * [English (US)](https://wordpress.org/plugins/magic-linking/)
 * Oznaka
 * [broken links](https://hr.wordpress.org/plugins/tags/broken-links/)[internal links](https://hr.wordpress.org/plugins/tags/internal-links/)
   [link suggestions](https://hr.wordpress.org/plugins/tags/link-suggestions/)[orphan pages](https://hr.wordpress.org/plugins/tags/orphan-pages/)
   [seo](https://hr.wordpress.org/plugins/tags/seo/)
 *  [Napredni pogled](https://hr.wordpress.org/plugins/magic-linking/advanced/)

## Ocjena

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/magic-linking/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/magic-linking/reviews/)

## Suradnici

 *   [ Carrero ](https://profiles.wordpress.org/dcarrero/)

## Podrška

Želite nešto reći? Potrebna vam je pomoć?

 [Pregledaj forum za podršku](https://wordpress.org/support/plugin/magic-linking/)