=== Hierarchical HTML Sitemap ===
Contributors: avovk, egolacrima, wppuzzle
Tags: sitemap, html sitemap, seo, hierarchical sitemap, posts, posts list, pages, pages list, shortcode
Requires at least: 5.8
Tested up to: 7.1
Stable tag: 1.4.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
A lightweight HTML sitemap that groups posts by hierarchical categories and can optionally list pages.
== Description ==
Hierarchical HTML Sitemap offers visitors an easy and intuitive way to navigate your blog.
This plugin generates an HTML sitemap of your WordPress blog. It displays a list of posts grouped by hierarchically sorted categories. By using a shortcode, you can display it on a page or anywhere else that supports shortcodes, such as a widget.
The output does not include CSS or JavaScript files. It is pure HTML, ready to inherit or receive your theme's styles.
= Features =
* Short and easy shortcode: `[htmlmap]`.
* Categories sorted hierarchically.
* Displays posts and/or pages.
* Can exclude specified posts, pages, or categories.
* Displays category navigation above the posts list.
* Displays post publication dates.
* Clean HTML without scripts.
* Does not enqueue unnecessary JavaScript or CSS files.
* No ads or author links in the output.
= Usage and options =
The `[htmlmap]` shortcode accepts these optional attributes:
* `exclude`: post or page IDs to omit, for example `[htmlmap exclude="445,446"]`.
* `exclude_cat`: category IDs to omit, for example `[htmlmap exclude_cat="1,34"]`.
* `showpages`: display the list of pages, for example `[htmlmap showpages]`.
* `hidecloud`: hide category navigation, for example `[htmlmap hidecloud]`.
* `showdescription`: display category descriptions, for example `[htmlmap showdescription]`.
* `hidedate`: hide post publication dates, for example `[htmlmap hidedate]`.
* `hidecount`: hide post counts in category headings, for example `[htmlmap hidecount]`.
You can combine attributes, for example:
`[htmlmap exclude="3546,7398" exclude_cat="1,34" showpages hidecloud]`
= HTML structure and CSS classes =
The shortcode preserves existing category heading IDs (`cat_`), the
category navigation class (`cat`), and the empty-category class (`null`).
Additional classes are available for theme customisation:
* `htmlmap-post-list`: each category's post list.
* `htmlmap-post`: each post list item.
* `htmlmap-children`: the list item containing child categories.
* `htmlmap-empty-category`: added alongside the legacy `null` class.
* `htmlmap-category-description`: a displayed category description.
* `htmlmap-page-list`: the optional pages list.
* `htmlmap-page`: each page list item.
Child categories are rendered after their parent category's posts inside a
dedicated list item, rather than inside the final post item.
= Extra =
* [GitHub repository](https://github.com/avovkdesign/hierarchical-html-sitemap) for issues and contributions.
== Installation ==
= Automatic installation =
1. Log in to your WordPress admin interface.
2. Go to **Plugins → Add New**.
3. Search for **Hierarchical HTML Sitemap**.
4. Select **Install Now**, then activate the plugin.
= Manual installation =
1. [Download the plugin ZIP](https://downloads.wordpress.org/plugin/hierarchical-html-sitemap.zip) and unzip it.
2. Upload the `hierarchical-sitemap` folder to `/wp-content/plugins/`.
3. In WordPress admin, go to **Plugins → Installed Plugins**.
4. Activate **Hierarchical HTML Sitemap**.
= Usage =
= Classic Editor =
1. Create or edit a page named, for example, “Sitemap”.
2. Add `[htmlmap]` to the page content.
3. Publish or update the page, then view it to see your sitemap.
= Block Editor =
1. Create or edit a page named, for example, “Sitemap”.
2. Add a **Shortcode** block.
3. Enter `[htmlmap]` in the block.
4. Publish or update the page, then view it to see your sitemap.
== Screenshots ==
1. Example of a sitemap.
== Changelog ==
= 1.4.0 =
* feat: add CSS classes for post, child-category, and page list elements.
* feat: add the `hierarchicalsitemap_shortcode_html` filter for the complete shortcode output.
* fix: sanitize shortcode ID lists and escape generated titles, descriptions, and URLs.
* fix: correct invalid nested list markup when rendering child categories.
* fix: handle empty shortcode attributes and empty category results safely.
* chore: test plugin syntax with PHP 8.3.
* chore: test plugin integration against WordPress 7.1.
* chore: update documentation and metadata.
= 1.3 =
* chore: test up to WordPress 4.6.9.
* feature: add the `hidecount` option that disables post counts in category names.
* feature: add filter hooks:
* `hierarchicalsitemap_category_title_html`
* `hierarchicalsitemap_posts_list_html`
* `hierarchicalsitemap_pages_list_html`
= 1.2 =
* chore: test up to WordPress 4.7.
= 1.1 =
* fix: display empty categories that have non-empty child categories.
* feature: add `showdescription`, which displays category descriptions.
* feature: add `hidedate`, which hides post publication dates.
= 1.0 =
* feature: initial release.