Description
Jalandhar Table of Contents generates an SEO-friendly table of contents (TOC) from the headings in your post or page. Instead of scrolling through long-form content, readers can jump straight to the exact section they came for. The plugin works automatically upon activation, or lets you place your TOC precisely where you want using a shortcode, a custom Gutenberg block, or a widget.
Every link points to a real, semantic anchor on the heading itself, and the entire TOC is wrapped in a proper <nav> landmark – so it is just as valuable to search engine crawlers and screen readers as it is to human visitors. Long-form guides, tutorials, recipes, FAQs, and review posts all rank and read better with a well-structured table of contents.
Table of Contents Features
- Automatic TOC Insertion: Automatically insert a table of contents into posts, pages, or any custom post type. Choose your preferred position and qualifying content types.
- Semantic & Search-Engine-Friendly: Uses real
<ul>/<li>(or<ol>/<li>) lists inside a<nav>landmark with clean anchor links that search engines may use for jump-to-section links in results. - Flexible Manual Insertion: Place your TOC manually using the
[jptoc]shortcode, the Gutenberg “Table of Contents” block, a widget, or the classic editor toolbar button. - Smart Heading Filtering: Set a minimum heading count so the TOC never displays on short posts. Choose which heading levels to include and skip specific headings by level or text matching.
- Hierarchical & Flat Views: Display nested sub-headings (e.g., H3 under H2) or a clean, flat list view.
- Advanced Numbering: Format lists with decimal or Roman numerals, sequentially or nested by depth.
- Full Appearance Customization: Complete control over width, float/alignment, typography (font size and weight), and colors.
- Built-in Color Schemes: Select from dark, light, white, transparent, or theme-inherited color schemes with individual color overrides.
- Interactive Elements: Optional show/hide toggle with custom labels and smooth scrolling with configurable top offsets for sticky headers.
- Clean URL Anchors: Generates readable anchor links in URLs (e.g.,
example.com/faq/#How_Do_This) instead of random IDs, with options for lowercase conversion and dash separation. - Accessibility Ready: Built with
aria-expandedstates on toggles and descriptivearia-labelattributes on<nav>landmarks. - Per-Post Overrides: Override the global settings on individual posts and pages when you need an exception.
- RTL Language Support: Works with right-to-left languages.
- Developer Friendly: Extensible via hooks and filters, and tested with popular page builders, caching plugins, and SEO plugins.
Auto Insert
To automatically insert a table of contents into your posts, enable “Auto Insert Table of Contents” under the plugin’s “Auto Insert” settings tab, then choose which post types should get one.
Supported automatic positions:
- Before the first heading
- After the first heading
- After the first block (paragraph or heading)
- Top of the post content
- Bottom of the post content
Manual Insert
If you prefer placing your table of contents manually, use any of these methods:
- The “Table of Contents” button in the classic editor toolbar
- The “Table of Contents” block in the Gutenberg editor
- The “Table of Contents” widget in your sidebars
- The
[jptoc]shortcode anywhere in your content
Clean, Readable Anchor Links
By default, each heading’s anchor is generated from its text (e.g., #How_Do_This), keeping your URLs human-readable. Under the “Misc.” settings tab, in the “Hash” section, you can choose the anchor format (as heading, as heading without transliterate, or a counter such as #jptoc1), convert anchors to lowercase, and replace underscores with dashes.
Note: For non-English websites using the “As heading” anchor format, enabling the Intl PHP extension ensures proper transliteration of anchors.
Compatibility
Jalandhar Table of Contents has been tested for compatibility with:
- Elementor Page Builder
- Beaver Builder and Beaver Builder Themer Add-On
- WPBakery Page Builder
- Oxygen Builder
- WPML (WordPress Multilingual Plugin)
- Rank Math SEO
- WP Rocket
- Toolset Views and Toolset Access
Developer Hooks & Filters
Filters jptoc_before and jptoc_after
Add custom HTML immediately before or after the table of contents.
add_filter('jptoc_before', function ($before) {
return '<p>Custom text before TOC.</p>' . $before;
});
Filter jptoc_shortcode_tag
Change the shortcode tag from the default [jptoc].
add_filter('jptoc_shortcode_tag', function ($tag) {
return 'toc';
});
Filter jptoc_heading_id
Customize the anchor ID generated for individual headings.
add_filter('jptoc_heading_id', function ($id, $label) {
return $id;
}, 10, 2);
Screenshots








Blocks
This plugin provides 1 block.
- Jptoc Table Of Contents
Installation
Installing from the WordPress Dashboard
- Navigate to Plugins > Add New.
- Search for “Jalandhar Table of Contents”.
- Click Install Now and then Activate.
Installing via Upload
- Download the plugin ZIP archive.
- Go to Plugins > Add New > Upload Plugin in your WordPress dashboard.
- Select the file, click Install Now, and click Activate Plugin.
Manual FTP Installation
- Upload the
jalandhar-table-of-contentsfolder to your/wp-content/plugins/directory. - Navigate to the Plugins screen in WordPress and click Activate.
Getting Started
- A “Table of Contents” button appears in the classic editor toolbar, on the post/page edit screen.
- A “Table of Contents” block becomes available in the Gutenberg editor – search for it in the block inserter.
- A “Table of Contents” widget becomes available under Appearance > Widgets.
- A “Table of Contents” menu item appears under Settings > Table of Contents in your WP dashboard, where you can configure global settings, appearance, colors, and auto-insert behavior.
FAQ
-
How do I add a table of contents to a post?
-
Once active, the plugin can automatically insert a TOC based on your rules. Alternatively, use the
[jptoc]shortcode, the Gutenberg block, or the widget. -
Why isn’t the table of contents showing on a specific post?
-
Check the “Minimal Count of Headings” setting under General – if a post has fewer headings than this value, no table of contents is displayed. Also check the “Auto Insert” tab to confirm the current post type and position settings match where you expect it to appear.
-
Can I control which post types show a table of contents automatically?
-
Yes. Go to the “Auto Insert” tab in the plugin settings and choose which post types (posts, pages, or any custom post type) should have a table of contents inserted automatically, along with where on the page it should appear.
-
I am using only the widget, and its links do not jump to the right place. What should I do?
-
If you use the widget independently without auto-insertion or blocks, go to the “Processing Headings” settings tab and add your post types under “Always for Post Types”, then save. This guarantees heading IDs are added even without a visible TOC.
-
Can I exclude specific headings from the table of contents?
-
Yes. Under the “Misc.” tab, in the “Skip Headings” section, you can skip specific heading levels (e.g. H1 or H6) entirely, or exclude headings whose text matches a pattern you define.
-
Does the plugin support nested/hierarchical headings?
-
Yes. Enable “Hierarchical View” under the General tab to nest lower-level headings (e.g. H3) under their parent headings (e.g. H2) in the generated list.
-
Can I change how the table of contents looks?
-
Yes. The Appearance tab lets you control width, alignment, colors, and font sizes and weights. The “List Markup Tags” option on the “Misc.” tab lets you choose between semantic
<ul>/<li>markup,<ol>/<li>, or plain<div>elements. -
Does the plugin work with page builders?
-
Yes. It has been tested with Elementor, Beaver Builder, WPBakery Page Builder, and Oxygen. See the Compatibility section above for the full list.
-
Is the table of contents accessible?
-
Yes. The generated markup uses a
<nav>landmark with anaria-label, and the show/hide toggle exposes its expanded/collapsed state viaaria-expandedfor screen reader users. -
Where can I get support?
-
Please use the support forum on this plugin’s WordPress.org page. Include your WordPress version, PHP version, and steps to reproduce the issue whenever possible.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Jalandhar Table of Contents” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Jalandhar Table of Contents” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release of the Jalandhar Table of Contents (TOC) plugin.
