Title: AIFORYA Table of Contents
Author: aiforya
Published: <strong>August 17, 2026</strong>
Last modified: August 17, 2026

---

Search plugins

![](https://ps.w.org/aiforya-table-of-contents/assets/banner-772x250.png?rev=3650483)

![](https://ps.w.org/aiforya-table-of-contents/assets/icon-256x256.png?rev=3650459)

# AIFORYA Table of Contents

 By [aiforya](https://profiles.wordpress.org/aiforya/)

[Download](https://downloads.wordpress.org/plugin/aiforya-table-of-contents.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/aiforya-table-of-contents/#description)
 * [Reviews](https://wordpress.org/plugins/aiforya-table-of-contents/#reviews)
 *  [Installation](https://wordpress.org/plugins/aiforya-table-of-contents/#installation)
 * [Development](https://wordpress.org/plugins/aiforya-table-of-contents/#developers)

 [Support](https://wordpress.org/support/plugin/aiforya-table-of-contents/)

## Description

**AIFORYA Table of Contents** builds a clickable table of contents from the headings
in your content — and then keeps the resulting anchor links working.

#### The problem this plugin exists for

In most tables of contents an anchor is derived from the heading text. Rename “Introduction”
to “Foreword” and `#introduction` stops existing. Every link that pointed at it 
is now broken: your own internal links, links from other sites, links in newsletters
you sent two years ago.

Nothing warns you. The page still returns 200, and the browser simply does not scroll.

#### What this plugin does instead

A section is given its address **when it is first published**, and keeps it. The
heading text can change, the section can be moved, the post can be split into pages—
the address follows the _content_, never the wording or the position. Every heading
text a section has ever had is kept as an alias, so older links keep resolving too.

**Try it in thirty seconds:** publish a post with two sections, copy a link to the
second one, then swap the two sections around and rename one of them. Your link 
still lands on the right section.

#### Features

 * **Permanent section addresses** — an anchor assigned once is kept, through renames,
   reordering and repagination.
 * **Alias registry** — previous addresses of a section stay reachable, so old links
   keep working. Addresses are kept by default: an address you stop honouring is
   a promise you break without knowing it.
 * **Multipage posts covered end to end** — when a post is split with the `<!--nextpage--
   >` tag, the table lists the headings of _every_ page and links to the right page
   and heading. This is the same promise applied across pages.
 * **Automatic table of contents** — reads the headings (h2, h3, and so on) in your
   content and builds a hierarchical list of links.
 * **Clickable anchors** — a unique anchor link is added to each heading so readers
   can jump directly.
 * **Automatic or manual placement** — insert the table automatically before the
   first heading, or choose where it goes with the `[aiforya_toc]` shortcode.
 * **Post types of your choice** — enable the table on the post types you want (
   posts, pages, and more).
 * **Adjustable threshold and levels** — set the minimum number of headings required,
   and the deepest heading level to include.
 * **Neutral, unobtrusive styling** — the table fits into any public theme without
   imposing its own colours.

#### Privacy

The plugin runs entirely on your own server. Nothing is sent to any third party.

#### Advanced version

An advanced version (see aiforya.fr) adds a floating table of contents, numbering,
word counts and smooth scrolling. This free version is fully functional on its own,
with no time limit.

## Screenshots

[⌊Table of contents status and configuration overview.⌉⌊Table of contents status
and configuration overview.⌉[

Table of contents status and configuration overview.

[⌊Settings: display, covered content and table contents.⌉⌊Settings: display, covered
content and table contents.⌉[

Settings: display, covered content and table contents.

[⌊The clickable table of contents as readers see it on the front end.⌉⌊The clickable
table of contents as readers see it on the front end.⌉[

The clickable table of contents as readers see it on the front end.

## Installation

 1. Install and activate the plugin.
 2. Open the **AIFORYA Table of Contents** menu.
 3. In the **Settings** tab, choose the post types, the minimum number of headings 
    and the levels to include.
 4. Publish or edit a long piece of content: the table appears automatically. To place
    it yourself, insert `[aiforya_toc]`.

## FAQ

### How is the table built?

The plugin reads the headings in your content (h2, h3, and so on, down to the level
you choose) and turns them into a hierarchical list. An anchor link is added to 
each heading so readers can jump directly.

### What happens to my links when I rename a heading?

They keep working. The section keeps the address it was given when it was first 
published, and the heading text you just replaced is kept as an alias, so links 
built on it still resolve. Both the old and the new wording lead to the same section.

### And if I move a section somewhere else in the post?

Its address moves with it. Sections are matched by their content, not by their position,
so swapping two sections does not swap their addresses — which is exactly what would
happen if positions were used.

### Where is this registry stored, and what happens if I remove the plugin?

In your own database, as post metadata, on your own server. Nothing leaves your 
site. If you deactivate the plugin the registry is left untouched, so reactivating
it restores every address; uninstalling removes the plugin’s settings.

### Are there sections the plugin will not track?

Yes, and deliberately: two headings with the exact same wording in the same post.
They cannot be told apart without guessing, and a “permanent” address that guesses
wrong is worse than none. Those headings keep the ordinary behaviour, with an anchor
derived from their text.

### What happens on a post split into several pages?

The table covers the whole post. On any page, it lists the headings of every page,
and each link takes the reader to the correct page and scrolls to the correct heading.
A page that contains no heading of its own still shows the table, so the reader 
is never left without the outline.

### Which content shows a table of contents?

The post types you select in the Settings tab, and only when they reach the minimum
number of headings you defined.

### Can I place the table at a specific spot?

Yes. Insert the `[aiforya_toc]` shortcode where you want it. When that shortcode
is present, automatic insertion is disabled for that content to avoid duplicates.

### Is it compatible with my theme?

Yes. It uses neutral, unobtrusive styling designed to fit into any public theme.

### Do I need an API key?

No. The plugin is entirely self-contained and runs locally, with no external service.

### Where do I get support?

Through the support forum of this plugin on WordPress.org.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“AIFORYA Table of Contents” is open source software. The following people have contributed
to this plugin.

Contributors

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

[Translate “AIFORYA Table of Contents” into your language.](https://translate.wordpress.org/projects/wp-plugins/aiforya-table-of-contents)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/aiforya-table-of-contents/),
check out the [SVN repository](https://plugins.svn.wordpress.org/aiforya-table-of-contents/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/aiforya-table-of-contents/)
by [RSS](https://plugins.trac.wordpress.org/log/aiforya-table-of-contents/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * Initial release: permanent section addresses kept through renames and reordering,
   alias registry so older anchor links keep resolving, full coverage of multipage
   posts split with `<!--nextpage-->`, automatic table of contents from headings,
   automatic insertion or `[aiforya_toc]` shortcode, post types, adjustable threshold
   and levels.

## Meta

 *  Version **1.0.0**
 *  Last updated **24 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [anchors](https://wordpress.org/plugins/tags/anchors/)[headings](https://wordpress.org/plugins/tags/headings/)
   [permalinks](https://wordpress.org/plugins/tags/permalinks/)[table of contents](https://wordpress.org/plugins/tags/table-of-contents/)
   [toc](https://wordpress.org/plugins/tags/toc/)
 *  [Advanced View](https://wordpress.org/plugins/aiforya-table-of-contents/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/aiforya-table-of-contents/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/aiforya-table-of-contents/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/aiforya-table-of-contents/)