NiroSitemap – No-Setup Dynamic XML Sitemap
NiroSitemap – No-Setup Dynamic XML Sitemap

NiroSitemap – No-Setup Dynamic XML Sitemap

0/5 (0 ratings) — active installs Updated Sep 26, 2026

NiroSitemap is a no-setup, plug-and-play dynamic sitemap for WordPress. Activate it and your sitemap is live at /sitemap.xml. There is no settings screen, no wizard and nothing to configure.

No setup

You do not choose post types, set priorities or regenerate anything. NiroSitemap finds every public post type on your site, including ones added later by your theme or other plugins, and lists them for you.

Plug and play

The sitemap works the moment you activate the plugin. You do not need to save your permalinks, create files or add anything to robots.txt. Deactivate it and everything it added is removed.

Dynamic

The sitemap is built from your live content, not from a static file. When you publish, update, unpublish or delete a post, the sitemap reflects it on the next request.

How it works

  1. /sitemap.xml is a sitemap index that points to one sitemap per post type, such as /sitemap-post-1.xml, /sitemap-page-1.xml or /sitemap-product-1.xml.
  2. Each post type sitemap lists up to 2,000 URLs with their last modified date. Larger post types are split into -2.xml, -3.xml and so on.
  3. Sitemaps are built on first request and cached. Publishing, updating, unpublishing, trashing or deleting a published post refreshes them straight away.

Features

  • No setup: works right after activation, with no settings screen. No need to visit Settings > Permalinks.
  • Includes posts, pages and every public custom post type that has viewable URLs, including WooCommerce products and post types added by other plugins. Media attachments are left out.
  • Only published posts are listed. Drafts, private posts and password-protected posts are never included.
  • Adds a homepage entry (/sitemap-home.xml) when your homepage shows your latest posts. A static front page is listed as a normal page.
  • Adds a Sitemap: line to your virtual robots.txt so search engines find the sitemap on their own.
  • Turns off the built-in WordPress sitemap (/wp-sitemap.xml) so search engines see one sitemap, not two.
  • Stable pagination: posts are ordered by ID, so edits never move posts between sitemap pages.
  • Fast: generated sitemaps are cached for up to 12 hours and refreshed only when published content changes.
  • Works with plain permalinks too, at /?nirositemap=index.
  • Multisite compatible: each site gets its own sitemap.
  • No external services, no tracking, no ads.

What NiroSitemap changes on your site

  • Adds the rewrite rules for /sitemap.xml, /sitemap-home.xml and /sitemap-{post-type}-{number}.xml, and removes them when you deactivate the plugin.
  • Stores two small options (nirositemap_version and nirositemap_bust), which are deleted when you deactivate the plugin.
  • Stores generated sitemaps as transients. They expire on their own within 12 hours.

NiroSitemap does not write any files. If a real sitemap.xml file exists in your site’s root folder, your web server serves that file instead, so delete it to use NiroSitemap.

Privacy

NiroSitemap does not collect or send any data. It does not contact search engines. They read the sitemap when they visit your site.

For developers

Filters:

  • nirositemap_post_types — array of post type names to include.
  • nirositemap_query_args — WP_Query arguments for each post type, with the post type as the second argument. Use it to exclude posts, for example ones marked noindex.

Example: exclude a post type and posts with a meta flag.

add_filter( 'nirositemap_post_types', fn( $types ) => array_diff( $types, array( 'my_cpt' ) ) );

add_filter( 'nirositemap_query_args', function ( $args ) { $args['meta_query'] = array( array( 'key' => '_noindex', 'compare' => 'NOT EXISTS' ) ); return $args; } );

After changing these filters, update any published post, or wait up to 12 hours, to see the change.