Questions and problems
Reading time: six minutes. If your question is not here, ask on the support forum, which opens when the plugin is approved, and we will answer within one working day, and then add the answer to this page.
No list appeared
Work down this list; it is in the order the answer usually turns out to be.
- Count the headings. Fewer than three and there is no list, by design. Change Minimum headings if you want one anyway.
- Check the levels. h2 and h3 are listed by default. A post written in h4 and h5 needs those levels ticked in Heading levels.
- Check the post’s own panel. The Table of Contents panel in the editor can switch the list off for one post.
- Check the kind of content. Only posts and pages are ticked to start with. A product, a documentation page or anything else needs ticking in Which content gets a list.
- Check you are not on a phone with Hide on phones on.
- Check for a second contents plugin. If LuckyWP or Easy Table of Contents is still active, switch one of them off; two plugins adding anchors to the same headings will fight.
- Check your theme or builder renders the post content. Some page builder templates assemble a page out of their own widgets, in which case there is no post content for us to read. Put
[essence_toc]where you want the list.
The list appeared twice
Automatic placement is on and there is also a block, a shortcode or a widget on the page. Turn Add a list automatically off, or remove the one you placed by hand.
The links jump to the wrong place, or to the top of the page
Almost always one of two things.
Another plugin is also adding ids. Switch the other contents plugin off. Whichever of the two runs last wins, so the list from one can end up pointing at names made by the other.
The anchor format was changed after the links were shared. Changing the format renames every anchor on the site. Put it back to what it was and the old links work again. The report on the Move from another plugin tab will tell you what your old plugin was producing.
The heading ends up hidden under my site’s header
Set Fixed header offset to the height of your fixed bar, in pixels. This is a browser feature rather than a script, so it works everywhere and costs nothing.
I reworded a heading and the old link still works. Why?
Because Keep anchors when a heading is edited is on. Each post remembers the anchors it has published and matches your edited heading back to its old one, so a link somebody shared keeps working. This is deliberate and it is the main reason to use this plugin.
If you would rather the anchor always followed the words, switch that setting off. Existing links will break the next time you reword a heading, which is how every other contents plugin behaves.
I want to change what an anchor is called
Set the id on the heading itself: select the heading in the editor, open the Advanced panel, and put your own text in the HTML anchor box. An id the writer set always wins, and the plugin will never rename it.
The numbers are not in the list when I copy it
They should be. The numbers are real text in the page, not drawn by the stylesheet, so copying the list copies them. If you are pasting into something that strips formatting you will get the numbers but not the indentation, which is the best anyone can do.
Can I style the list myself?
Three ways, in increasing order of control:
- Extra CSS classes adds your class to the list, and you write CSS against it.
- Box, “My own colours” gives you five colour pickers with no CSS at all.
- Load no stylesheet prints none of ours and leaves the whole appearance to you. The markup is a nested
<ol>of<a>elements inside a<details>, with classes beginningesd-toc.
Does it slow my site down?
No, and the figure is measured rather than claimed: a post with 200 headings and 22,000 words takes about three milliseconds to read, on PHP 7.4. The work grows with the number of headings, not with the length of the post.
Your reader downloads no JavaScript and no extra file. The stylesheet is about 4KB printed into the page, and only on pages that have a list.
Does it work with caching?
Yes, with nothing to configure. The list is part of the page’s HTML. There is no script to exclude, defer or combine.
Does it work with a page builder?
Yes. Use [essence_toc] in the builder’s text or shortcode element. Themes and page builders has a section for Elementor, Divi and YOOtheme Pro.
Does it send anything anywhere?
No. No telemetry, no usage statistics, no licence check, no fonts from a third party, no requests of any kind. Nothing leaves your site.
Is it accessible?
The list is a nested list of links, which is what a screen reader expects. The fold is a <details> element, so it is in the keyboard’s tab order and announces itself as a control that expands and collapses, without us having to describe it with ARIA attributes. The focus ring appears for keyboard users and not for mouse clicks, which is what WCAG 2.2 asks for. Smooth scrolling turns itself off for readers who have asked their device for less motion.
Contrast is the part that depends on you: if you choose Box, “My own colours”, check that your text still reads against your background.
What happens when I delete the plugin?
Everything it stored goes: the settings, each post’s own choices, and the anchors it remembered. Your posts are untouched, because the plugin never changed them. Deleting it removes the lists and the heading ids from your pages, so links people shared will stop working, which is true of every contents plugin.
Deactivating rather than deleting leaves everything in place, ready for when you switch it back on.
Can I use it on a client’s site? Can I use it commercially?
Yes. It is GPLv2 or later, like WordPress itself, with no limit on sites.
Where do I report a security problem?
Privately, to security@essence-design.co.uk, rather than on the public forum. We will acknowledge it within one working day.