
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.
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.
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.
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.
/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.xml, -3.xml and so on./sitemap-home.xml) when your homepage shows your latest posts. A static front page is listed as a normal page.Sitemap: line to your virtual robots.txt so search engines find the sitemap on their own./wp-sitemap.xml) so search engines see one sitemap, not two./?nirositemap=index./sitemap.xml, /sitemap-home.xml and /sitemap-{post-type}-{number}.xml, and removes them when you deactivate the plugin.nirositemap_version and nirositemap_bust), which are deleted when you deactivate the plugin.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.
NiroSitemap does not collect or send any data. It does not contact search engines. They read the sitemap when they visit your site.
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.