{"id":252518,"date":"2025-09-16T18:43:41","date_gmt":"2025-09-16T18:43:41","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-sitemap-generator\/"},"modified":"2026-03-24T12:30:48","modified_gmt":"2026-03-24T12:30:48","slug":"lightweight-sitemap-generator","status":"publish","type":"plugin","link":"https:\/\/tah.wordpress.org\/plugins\/lightweight-sitemap-generator\/","author":23366035,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.23","stable_tag":"1.0.23","tested":"6.9.4","requires":"4.8","requires_php":"7.0","requires_plugins":null,"header_name":"Lightweight Sitemap Generator","header_author":"Andrey Berestov","header_description":"Lightweight and reliable XML sitemap generator for WordPress. Supports file (sitemap*.xml) and dynamic modes, WooCommerce and DW Q&A (optional). Now can split by number of URLs.","assets_banners_color":"f1d7c4","last_updated":"2026-03-24 12:30:48","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.myetherwallet.com\/#send\/0x37385DA1388F2921583d4750FB44Def7D76cAb23","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/andreyberestov","rating":0,"author_block_rating":0,"active_installs":90,"downloads":1381,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"andreyberestov","date":"2025-09-16 18:43:18"},"1.0.10":{"tag":"1.0.10","author":"andreyberestov","date":"2025-10-13 00:15:05"},"1.0.11":{"tag":"1.0.11","author":"andreyberestov","date":"2025-10-14 12:40:19"},"1.0.12":{"tag":"1.0.12","author":"andreyberestov","date":"2025-10-14 23:34:10"},"1.0.13":{"tag":"1.0.13","author":"andreyberestov","date":"2025-10-16 22:48:53"},"1.0.14":{"tag":"1.0.14","author":"andreyberestov","date":"2025-10-19 19:55:23"},"1.0.15":{"tag":"1.0.15","author":"andreyberestov","date":"2025-10-20 18:57:42"},"1.0.16":{"tag":"1.0.16","author":"andreyberestov","date":"2025-10-20 21:25:40"},"1.0.17":{"tag":"1.0.17","author":"andreyberestov","date":"2025-10-20 22:05:11"},"1.0.18":{"tag":"1.0.18","author":"andreyberestov","date":"2025-10-30 20:50:03"},"1.0.19":{"tag":"1.0.19","author":"andreyberestov","date":"2025-12-04 14:39:33"},"1.0.2":{"tag":"1.0.2","author":"andreyberestov","date":"2025-09-17 17:02:15"},"1.0.20":{"tag":"1.0.20","author":"andreyberestov","date":"2026-01-23 16:16:37"},"1.0.21":{"tag":"1.0.21","author":"andreyberestov","date":"2026-03-13 08:25:18"},"1.0.23":{"tag":"1.0.23","author":"andreyberestov","date":"2026-03-24 12:30:48"},"1.0.3":{"tag":"1.0.3","author":"andreyberestov","date":"2025-09-18 07:11:36"},"1.0.4":{"tag":"1.0.4","author":"andreyberestov","date":"2025-10-01 12:41:27"},"1.0.5":{"tag":"1.0.5","author":"andreyberestov","date":"2025-10-01 18:57:02"},"1.0.6":{"tag":"1.0.6","author":"andreyberestov","date":"2025-10-08 23:12:25"},"1.0.7":{"tag":"1.0.7","author":"andreyberestov","date":"2025-10-10 10:43:05"},"1.0.8":{"tag":"1.0.8","author":"andreyberestov","date":"2025-10-11 18:06:25"},"1.0.9":{"tag":"1.0.9","author":"andreyberestov","date":"2025-10-12 01:30:08"}},"upgrade_notice":{"1.0.23":"<p>UI polish and fixes.<\/p>","1.0.20":"<p>Introduces support for the native WordPress sitemap endpoint (wp-sitemap.xml) and an optional write permissions check. Review settings after upgrade if you use file-based sitemaps.<\/p>","1.0.19":"<p>Improved file-handling safety and consistency across all sitemap generation modes.\nRecommended update for better compatibility with various hosting environments and WP versions.<\/p>","1.0.18":"<p>Improved filesystem handling and coding-standards compliance.\nThe plugin now uses smarter, faster, and safer file operations while keeping full backward compatibility with PHP 7.0\u20138.4 and WordPress 4.8\u20136.8.3.<\/p>","1.0.17":"<p>Improved reliability of filesystem permission checks.\nThe permission probe cache is now invalidated both after successful and failed sitemap generation, ensuring the admin UI always reflects the current write-access state.<\/p>","1.0.16":"<p>Improved performance of admin permission checks.<\/p>","1.0.15":"<p>Internal code refactoring to improve readability and bring admin page markup in line with HTML5 standards.\nThis update is fully compatible and safe to install.<\/p>","1.0.14":"<p>Codebase cleaned and formatted for WordPress standards.\nThe &quot;noindex, follow&quot; header option is now shown only when Dynamic mode is active.<\/p>","1.0.13":"<p>Improved interface, faster file handling, optional conflict checker and X-Robots-Tag support, plus diagnostic header display and many small fixes.\nRecommended update for all users.<\/p>","1.0.12":"<p>Performance and usability update:\n- Added manual\/automatic preview toggle.\n- Faster admin load on large sites.\n- Unified notices and button labels.\nRecommended update for all users.<\/p>","1.0.11":"<p>Major performance and stability update:\n- Streaming preview engine identical to XML output.\n- Optimized dynamic index generation and memory handling.\n- Improved admin reliability and compatibility (PHP 7.0\u20138.4).\nRecommended update for all users.<\/p>","1.0.10":"<p>Improved performance, scalability, and PHP 7.0\u20138.4 compatibility.<\/p>","1.0.9":"<ul>\n<li>Raised minimum PHP version to 7.0 for better generator stability.<\/li>\n<\/ul>","1.0.8":"<p>Maintenance and performance update \u2014 introduces a new streaming split mode\nfor large sitemaps, adds ETag\/304 caching, and improves sanitization and\nstability. Recommended for all users.<\/p>","1.0.7":"<p>Minor UI update: unified and simplified \u201cPreview\u201d and \u201cOn-disk sitemap\u201d sections for a cleaner look and better readability.<\/p>","1.0.6":"<p>Improved admin interface: unified homepage mode names, compact \u201cLW Sitemap\u201d menu title, and new two-column layout (Preview + On-disk) with 1-hour caching and \u201cRecalculate preview\u201d button.\nRecommended update for all users \u2014 improves clarity, stability, and compatibility.<\/p>","1.0.5":"<p>Translations update. The plugin now relies on official WordPress.org language packs and no longer includes outdated local <code>.mo\/.po<\/code> files. Recommended update for all sites using non-English locales.<\/p>","1.0.4":"<p>New \u201cConservative\u201d homepage  mode + a top \u201cGenerate \/ Update\u201d button (File mode only). Smart mode now respects enabled custom post types. Recommended update.<\/p>","1.0.3":"<p>Major performance upgrade for taxonomy  (bulk SQL). Optional soft cap available via filter. Recommended update for large sites.<\/p>","1.0.2":"<p>Major update: adds support for custom post types and taxonomies, and improves `` for categories, tags, authors, and date archives. Recommended update for better indexing.<\/p>","1.0.1":"<p>Security and stability update. Please upgrade to ensure compatibility with the WordPress.org Plugin Directory requirements.<\/p>","1.0.0":"<p>First stable release. Major improvements: smart homepage ``, split mode, improved dynamic caching, better security and compatibility.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3497077,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3497077,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3497074,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3497074,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.10","1.0.11","1.0.12","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","1.0.18","1.0.19","1.0.2","1.0.20","1.0.21","1.0.23","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3489965,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3376418,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Settings page of Lightweight Sitemap Generator in WordPress Network Admin.","2":"Example of generated XML sitemap."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[150,26282,1557,6358,2160],"plugin_category":[55],"plugin_contributors":[247977],"plugin_business_model":[],"class_list":["post-252518","plugin","type-plugin","status-publish","hentry","plugin_tags-google","plugin_tags-site-map","plugin_tags-sitemap","plugin_tags-xml-sitemap","plugin_tags-yandex","plugin_category-seo-and-marketing","plugin_contributors-andreyberestov","plugin_committers-andreyberestov"],"banners":{"banner":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/banner-772x250.png?rev=3497074","banner_2x":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/banner-1544x500.png?rev=3497074","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/icon-128x128.png?rev=3497077","icon_2x":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/icon-256x256.png?rev=3497077","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/screenshot-1.png?rev=3489965","caption":"Settings page of Lightweight Sitemap Generator in WordPress Network Admin."},{"src":"https:\/\/ps.w.org\/lightweight-sitemap-generator\/assets\/screenshot-2.png?rev=3376418","caption":"Example of generated XML sitemap."}],"raw_content":"<!--section=description-->\n<p><strong>Lightweight Sitemap Generator<\/strong> is a minimal WordPress plugin that creates a valid XML sitemap for search engines (Google, Yandex and others), fully compliant with <a href=\"https:\/\/www.sitemaps.org\/\">sitemaps.org<\/a>.<\/p>\n\n<p><strong>Main features:<\/strong><\/p>\n\n<ul>\n<li>Generates a valid <code>sitemap.xml<\/code> (or wp-sitemap.xml) with proper <code>&lt;loc&gt;<\/code> and <code>&lt;lastmod&gt;<\/code> tags (ISO-8601 UTC format)<\/li>\n<li>Unified structure for posts, pages, products, built-in taxonomies, and detected public third-party taxonomies<\/li>\n<li>Global chronological order (newer \u2192 older)<\/li>\n<li>Automatic duplicate prevention across all sources<\/li>\n<li>Two modes:\n\n<ul>\n<li><strong>File mode<\/strong> \u2014 creates a static sitemap in the site root (minimal server load)<\/li>\n<li><strong>Dynamic mode<\/strong> \u2014 builds sitemap on-the-fly (always up to date, cached with TTL)<\/li>\n<\/ul><\/li>\n<li>Clean and minimal settings page in WP Admin:\n\n<ul>\n<li>Enable or disable posts, pages, categories, tags, authors, archives<\/li>\n<li>Supports WooCommerce products, DW Q&amp;A, and all detected custom post types\/taxonomies<\/li>\n<\/ul><\/li>\n<li>Homepage is always included automatically<\/li>\n<li>Flexible <code>&lt;lastmod&gt;<\/code> for homepage:\n\n<ul>\n<li><strong>Smart<\/strong> \u2014 based on the most recently updated content<\/li>\n<li><strong>Conservative<\/strong> \u2014 static front-page date<\/li>\n<li><strong>Fast<\/strong> \u2014 current time on each generation<\/li>\n<\/ul><\/li>\n<li>Optional sitemap splitting (up to 50 000 URLs per part) with automatic sitemap index<\/li>\n<li><strong>Google News<\/strong>: Optional separate <code>news-sitemap.xml<\/code> for Google News with 48-hour news window and 1,000 URLs per file<\/li>\n<li>Two independent generation engines \u2014 optimized for both regular and ultra-large sites<\/li>\n<li>Safe caching with TTL and diagnostic comments (HIT \/ MISS \/ timing)<\/li>\n<li><strong>HTTP header support<\/strong>:\n\n<ul>\n<li>Sends correct Content-Type, Last-Modified, Cache-Control, and ETag headers<\/li>\n<li>Optional X-Robots-Tag: noindex, follow header for sitemap requests<\/li>\n<\/ul><\/li>\n<li><strong>Security and reliability<\/strong>:\n\n<ul>\n<li>Capability checks and nonce validation<\/li>\n<li>Strict sanitization and option whitelisting<\/li>\n<li>File operations via <code>WP_Filesystem<\/code> (with safe fallback)<\/li>\n<li>No external requests<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Created by Andrey Berestov<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin in the WordPress admin.<\/li>\n<li>A new menu item <strong>Lightweight Sitemap<\/strong> will appear in the admin sidebar. Open it, configure the options you need, and click <strong>Generate \/ Update sitemap<\/strong>.<\/li>\n<li>Your sitemap will be available at: <code>https:\/\/example.com\/sitemap.xml<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"i%20see%20a%20conflict%20warning%20with%20another%20seo%20plugin.%20should%20i%20worry%3F\"><h3>I see a conflict warning with another SEO plugin. Should I worry?<\/h3><\/dt>\n<dd><p>No. The conflict check is purely informational. It just means that another plugin is also generating an XML sitemap.\nIn most cases you can simply disable sitemap generation in that plugin (Yoast SEO, Rank Math, SEOPress, etc.).\nThis does not affect your site\u2019s performance or indexing; it\u2019s just to help avoid confusion.<\/p><\/dd>\n<dt id=\"why%20doesn%E2%80%99t%20the%20plugin%20split%20the%20sitemap%20into%20multiple%20files%20by%20category%20%28like%20the%20default%20wordpress%20sitemap%29%3F\"><h3>Why doesn\u2019t the plugin split the sitemap into multiple files by category (like the default WordPress sitemap)?<\/h3><\/dt>\n<dd><p>The native WordPress sitemap (<code>\/wp-sitemap.xml<\/code>) generates multiple files for posts, pages, categories, tags, and other objects.\nThis structure is not wrong, but it makes things more complex without real SEO benefit.<\/p>\n\n<p>According to the official <a href=\"https:\/\/www.sitemaps.org\/protocol.html\">sitemaps.org<\/a> specification and search engine documentation (Google, Yandex, Bing), <strong>there is no ranking or indexing advantage in splitting by taxonomy<\/strong>.\nSearch engines only care that:\n- All important URLs are listed.\n- Each URL has a correct <code>&lt;loc&gt;<\/code> and (optionally) <code>&lt;lastmod&gt;<\/code>.\n- The sitemap is valid XML and under the 50,000 URL \/ 50 MB per file limit.<\/p>\n\n<p>The plugin keeps one clean sitemap (with automatic split into parts only when necessary). This avoids clutter, reduces confusion for users, and keeps things minimal yet powerful.<\/p><\/dd>\n<dt id=\"why%20doesn%E2%80%99t%20the%20plugin%20include%20%22priority%22%20or%20%22changefreq%22%20tags%3F\"><h3>Why doesn\u2019t the plugin include \"priority\" or \"changefreq\" tags?<\/h3><\/dt>\n<dd><p>These optional fields (<code>&lt;priority&gt;<\/code> and <code>&lt;changefreq&gt;<\/code>) were part of the early sitemap protocol but are <strong>ignored by all major search engines today<\/strong>.\n- Google officially states that these values are not used for crawling or ranking decisions.\n- Yandex also ignores them and relies only on <code>&lt;loc&gt;<\/code> and <code>&lt;lastmod&gt;<\/code>.<\/p>\n\n<p>Including these tags gives a false sense of control without actual effect. That\u2019s why the plugin follows the modern standard: <strong>only <code>&lt;loc&gt;<\/code> and <code>&lt;lastmod&gt;<\/code> are included<\/strong>, which is exactly what search engines expect and trust.<\/p><\/dd>\n<dt id=\"why%20doesn%27t%20the%20plugin%20include%20images%20or%20videos%20in%20the%20sitemap%3F\"><h3>Why doesn't the plugin include images or videos in the sitemap?<\/h3><\/dt>\n<dd><p>This is intentional. Modern search engines such as Google and Yandex are fully capable of discovering images and videos directly from your pages.\nIncluding media entries in the sitemap may significantly increase file size and slow down generation on large sites, without providing real SEO benefits for most users.<\/p>\n\n<p>The plugin focuses on reliability, performance, and standards compliance \u2014 keeping the sitemap lightweight, fast to generate, and easy for search engines to crawl.\nIf you run a specialized image or video portal and truly need dedicated media sitemaps, you can safely use this plugin alongside other SEO tools that handle media-specific indexing.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20ping%20google%20or%20other%20search%20engines%20when%20the%20sitemap%20is%20updated%3F\"><h3>Do I need to ping Google or other search engines when the sitemap is updated?<\/h3><\/dt>\n<dd><p>No. Since 2023, Google has officially discontinued support for the legacy ping endpoint.\nSearch engines now automatically discover and re-fetch sitemap files listed in your robots.txt or previously submitted via Search Console.<\/p>\n\n<p>Your sitemap will be crawled regularly without any manual \u201cping\u201d.\nAdding extra HTTP requests such as<\/p>\n\n<pre><code>https:\/\/www.google.com\/ping?sitemap=https:\/\/example.com\/sitemap.xml\n<\/code><\/pre>\n\n<p>no longer has any effect and is completely optional.<\/p>\n\n<p>If you want to ensure fast discovery, just include this line in your robots.txt:<\/p>\n\n<pre><code>Sitemap: https:\/\/example.com\/sitemap.xml\n<\/code><\/pre>\n\n<p>That\u2019s all you need \u2014 modern search engines periodically check robots.txt and automatically detect sitemap updates.<\/p><\/dd>\n<dt id=\"which%20plugins%20are%20supported%3F\"><h3>Which plugins are supported?<\/h3><\/dt>\n<dd><ul>\n<li><strong>WooCommerce<\/strong> (version 2.6 and above) \u2014 simple &amp; grouped products<\/li>\n<li><strong>DW Question Answer<\/strong> (version 1.4.3.4 and above) \u2014 published Q&amp;A pages<\/li>\n<li>Any plugin that registers a <strong>public custom post type<\/strong> or <strong>public custom taxonomy<\/strong> \u2014 detected automatically.\nThis means the plugin can support almost any third-party extension (portfolio plugins, directory listings, events, job boards, and more), as long as the post type or taxonomy is registered in WordPress as public.<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20can%20i%20verify%20that%20dynamic%20mode%20works%3F\"><h3>How can I verify that dynamic mode works?<\/h3><\/dt>\n<dd><p>Open <code>https:\/\/yoursite.com\/sitemap.xml<\/code> in browser developer tools or run:<\/p>\n\n<pre><code>curl -I https:\/\/yoursite.com\/sitemap.xml\n<\/code><\/pre>\n\n<p>You should see the header <code>X-LWSGP-Mode: dynamic<\/code> in the response.\nIf a physical <code>sitemap.xml<\/code> file exists in the site root, the server may serve it directly (without headers). The plugin will show a warning in the admin panel and let you delete that file.<\/p>\n\n<p>You can also enable diagnostic comments in the settings.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20edit%20robots.txt%3F\"><h3>Do I need to edit robots.txt?<\/h3><\/dt>\n<dd><p>The plugin does <strong>not<\/strong> touch your <code>robots.txt<\/code> automatically.\nIt is recommended to add the following line manually:<\/p>\n\n<pre><code>Sitemap: https:\/\/example.com\/sitemap.xml\n<\/code><\/pre>\n\n<p>This helps search engines (Google, Yandex, Bing, etc.) to discover your sitemap faster.<\/p><\/dd>\n<dt id=\"how%20can%20i%20limit%20taxonomy%20%3Clastmod%3E%20calculation%20for%20very%20large%20sites%3F\"><h3>How can I limit taxonomy  calculation for very large sites?<\/h3><\/dt>\n<dd><p>This is an advanced option, not required for normal sites.\nBy default, the plugin calculates <code>&lt;lastmod&gt;<\/code> for all selected taxonomy term archives (categories, tags, custom taxonomies) using a single optimized SQL query per taxonomy. This is safe and efficient in most cases.\nHowever, on extremely large sites with tens of thousands of terms, you may want to set a soft cap to avoid heavy database operations.\nYou can do this with a simple filter in your theme\u2019s <code>functions.php<\/code> or in a small custom plugin:<\/p>\n\n<pre><code>add_filter('lwsgp_tax_lastmod_cap', function() {\n    return 5000; \/\/ maximum number of terms per taxonomy for &lt;lastmod&gt;\n});\n<\/code><\/pre>\n\n<p>If the number of terms exceeds this cap, the plugin will still include the term URLs in the sitemap, but without <code>&lt;lastmod&gt;<\/code>. This prevents potential performance issues on very large sites.<\/p><\/dd>\n<dt id=\"how%20is%20the%20sitemap%20generated%3F\"><h3>How is the sitemap generated?<\/h3><\/dt>\n<dd><p>The plugin supports both <strong>File<\/strong> and <strong>Dynamic<\/strong> modes, each with its own generation method.<\/p>\n\n<p><strong>File mode (single or split)<\/strong>\nA complete list of URLs is built in memory and then written to disk as static XML files.\nThis approach has the lowest runtime cost for visitors because the web server serves the files directly.<\/p>\n\n<p><strong>Dynamic mode (on-the-fly)<\/strong>\nThe sitemap is generated dynamically when requested and cached for speed.<\/p>\n\n<ul>\n<li><strong>Dynamic single-file (no split)<\/strong> \u2014 builds the full list of URLs in memory and returns a single XML file.<\/li>\n<li><strong>Dynamic + Split<\/strong> \u2014 when splitting is enabled, you can choose between two engines:\n\n<ul>\n<li><strong>Dynamic-Single (default)<\/strong> \u2014 fast in-memory build for both index and parts; recommended for most sites.<\/li>\n<li><strong>Dynamic-Part-Stream<\/strong> \u2014 streaming generation with bounded memory for both index and parts; ideal for very large sites.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>Automatic engine fallback<\/strong><\/p>\n\n<p>By default, automatic fallback is <strong>disabled<\/strong>.<\/p>\n\n<p>Administrators can enable it by using the filter below:<\/p>\n\n<pre><code>\/\/ Return 0 to disable automatic fallback (default).\n\/\/ Return a positive integer to enable fallback when total URLs exceed the threshold.\nadd_filter('lwsgp_dynamic_single_threshold', function () {\n    return 0; \/\/ no automatic fallback by default\n});\n<\/code><\/pre>\n\n<p>Both modes produce identical XML output \u2014 they differ only in how data is processed and delivered.<\/p><\/dd>\n<dt id=\"what%20is%20the%20%22robots%20noindex%2C%20follow%22%20header%20and%20why%20is%20it%20available%20only%20in%20dynamic%20mode%3F\"><h3>What is the \"Robots noindex, follow\" header and why is it available only in Dynamic mode?<\/h3><\/dt>\n<dd><p>This is an advanced option, intended for SEO-sensitive configurations.<\/p>\n\n<p>When enabled, the plugin sends the following HTTP header for dynamically generated sitemap files:<\/p>\n\n<pre><code>X-Robots-Tag: noindex, follow\n<\/code><\/pre>\n\n<p>This tells search engines not to index the sitemap itself, but still to follow the links inside it.\nIn practice, this prevents the sitemap XML from appearing in search results, while ensuring that all listed URLs are still crawled and indexed as usual.<\/p>\n\n<p>The header is available only in Dynamic mode, because:<\/p>\n\n<ul>\n<li>In Dynamic mode, sitemaps are served through PHP (not as static .xml files), so the plugin can safely inject custom HTTP headers.<\/li>\n<li>In File mode, the sitemap is a physical XML file on disk. Static files are served directly by the web server (Apache, Nginx, etc.), and PHP cannot modify HTTP headers for them.<\/li>\n<\/ul>\n\n<p>If you need the same behavior in File mode, you can manually add this header in your web server configuration, for example in .htaccess:<\/p>\n\n<pre><code>&lt;FilesMatch \"sitemap.*\\.xml$\"&gt;\nHeader set X-Robots-Tag \"noindex, follow\"\n&lt;\/FilesMatch&gt;\n<\/code><\/pre>\n\n<p>For most sites, leaving this option disabled is perfectly fine. It is recommended mainly for developers, SEO specialists, or agencies who prefer explicit control over how search engines handle sitemap URLs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Reduced UI text verbosity.<\/li>\n<li>Improved section alignment and layout balance.<\/li>\n<li>Enabled Preview auto-calc by default.<\/li>\n<li>Added AJAX for Recalculate and Scan.<\/li>\n<li>Added Google News file state tracking.<\/li>\n<li>Minor admin UI spacing and typography polish.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Bug fixes.<\/li>\n<li>Added Google News sitemap support.<\/li>\n<li>Split the former monolithic code into modules.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Added support for the native WordPress sitemap endpoint (wp-sitemap.xml) with full parity across all modes (dynamic, file, split).<\/li>\n<li>Added optional write permissions check with smart caching to improve reliability on different hosting environments.<\/li>\n<li>Codebase cleaned and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Unified all sitemap cleanup routines under a single WP_Filesystem-aware deletion model for better consistency and security.<\/li>\n<li>Improved reliability of file removal on non-DIRECT filesystem methods (FTP, FTPS, SSH2).<\/li>\n<li>Enhanced fallback logic and cache clearing after deletion to ensure accurate file state detection.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Improved compliance with File operations via WP_Filesystem (with safe fallback) policy.<\/li>\n<li>Replaced direct unlink() calls with wp_delete_file() for better WordPress coding-standards compatibility.<\/li>\n<li>Introduced smart filesystem helpers (lwsgp_exists_smart() and lwsgp_glob_smart()) \u2014 automatic DIRECT\/FS detection without performance loss.<\/li>\n<li>Minor internal optimizations for faster permission checks and safer file deletions.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Enhanced reliability: filesystem permission probe cache now resets after both successful and failed sitemap generation \u2014 prevents outdated permission status in the admin panel.<\/li>\n<li>No behavioral change for users: generation logic, performance and compatibility remain unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Added 1-hour transient cache for filesystem write-permission checks (improves performance when opening plugin settings).<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Code style refactoring \u2014 unified indentation and alignment for better readability.<\/li>\n<li>Improved inline documentation and function-level comments.<\/li>\n<li>Admin UI HTML updated to follow modern HTML5 standards (no functional changes).<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Codebase cleaned and formatted for WordPress standards.<\/li>\n<li>Settings update: the \"Send X-Robots-Tag: noindex, follow\" option is now available only for Dynamic mode (hidden for File mode).<\/li>\n<li>Added dismissible (\u00d7) buttons to all admin notices for a cleaner and consistent WordPress-style interface.<\/li>\n<li>Minor internal stability improvements and refactoring for consistency across PHP 7.0\u20138.4 \/ WordPress 4.8\u20136.8.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Reworked admin interface and refreshed visual design.<\/li>\n<li>Optimized preview and on-disk sitemap reading \u2014 physical files are no longer rescanned on every action.<\/li>\n<li>Added new option to disable the Conflict Checker (SEO aggregator detection).<\/li>\n<li>Added optional X-Robots-Tag: noindex, follow header (can be toggled in settings).<\/li>\n<li>Diagnostic XML comments now include response headers.<\/li>\n<li>Numerous minor improvements, code clean-ups and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Added \"Preview auto-calc\" option in settings (off by default) \u2014 administrators can choose between automatic or manual preview calculation.<\/li>\n<li>Improved admin page performance on large sites \u2014 preview no longer recalculates automatically unless enabled.<\/li>\n<li>Unified button labels: \"Calculate\" for first run, \"Recalculate\" after preview exists.<\/li>\n<li>Removed unnecessary write-permission checks in Dynamic mode (only checked in File mode).<\/li>\n<li>Unified admin notices \u2014 all messages now use consistent non-dismissible style.<\/li>\n<li>Fixed issue where \"Last calculated: N\/A\" could remain after manual preview rebuild.<\/li>\n<li>Code cleanup and comments harmonized for PHP 7.0\u20138.4 compatibility.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Added streaming preview engine (100% identical to XML generation) \u2014 now preview counts are perfectly matched to real sitemap output.<\/li>\n<li>Replaced old full-memory preview with new bounded-memory streaming counter for better performance on large sites.<\/li>\n<li>Improved stability of admin operations with transient locks and strict sanitization.<\/li>\n<li>Minor internal refactoring and code cleanup (PHP 7.0\u20138.4 compatibility).<\/li>\n<li>Added automatic plugin version display in the admin header (auto-detected from plugin header).<\/li>\n<li>Improved admin \"Language\" selector.<\/li>\n<li>Optimized dynamic sitemap index generation (single-pass streaming for Dynamic-Part-Stream).<\/li>\n<li>Improved PRG workflow for \"Recalculate\" action.<\/li>\n<li>Added selectable dynamic engines for split mode:\n\n<ul>\n<li>Dynamic-Part-Stream (safe streaming)<\/li>\n<li>Dynamic-Part-Single (fast in-memory with auto-fallback)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Refactored generators for PHP 7+ compatibility and stability.<\/li>\n<li>Replaced legacy isset(...) patterns with modern ?? operator.<\/li>\n<li>Added return types for private methods and unified error handling.<\/li>\n<li>Code optimization and internal refactoring for better performance and maintainability<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Raised minimum PHP version to 7.0 for better generator stability.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>UI\/UX: Improved spacing, typography, and overall admin consistency.<\/li>\n<li>Security: Enhanced sanitization and stricter HTTP validation.<\/li>\n<li>Performance: Added ETag\/304 caching and a new streaming split mode for large sitemaps.<\/li>\n<li>Code Quality: Better escaping, PHPCS compliance, and safe fallbacks.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>UI: Unified style for \u201cPreview\u201d and \u201cOn-disk\u201d sections \u2014 shorter, cleaner layout for easier reading.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>UI: Unified homepage mode names \u2014 now \u201cSmart (recommended)\u201d, \u201cConservative (use front page modified date)\u201d, and \u201cFast (always use 'Now')\u201d.<\/li>\n<li>UI: Renamed the admin sidebar menu item to \u201cLW Sitemap\u201d for a compact, single-line label.<\/li>\n<li>UI: Redesigned the admin stats area \u2014 \u201cTotal entries (preview)\u201d and \u201cOn-disk sitemap (current file)\u201d now display side by side for better readability.<\/li>\n<li>UX: Preview (\u201cTotal entries\u201d) is now automatically calculated in both modes (File and Dynamic) and cached for 1 hour. Added \u201cRecalculate preview\u201d button for manual refresh.<\/li>\n<li>Perf: Small optimization in admin preview recalculation.<\/li>\n<li>Stability: Verified compatibility with WordPress 4.8 \u2013 6.8.3 and PHP 7.0 \u2013 8.4.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>I18N: Removed bundled <code>.po\/.mo<\/code> files from the plugin package to avoid conflicts with community translations.<\/li>\n<li>I18N: Improved language loading logic \u2014 plugin now prioritizes official WordPress.org translation packs (GlotPress). Falls back to local <code>\/languages<\/code> folder only if no global translation exists.<\/li>\n<li>UX: No functional changes. This release ensures consistent and up-to-date translations for all users.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>UX: Added a quick \u201cGenerate \/ Update sitemap\u201d button at the top of the settings screen (File mode only).<\/li>\n<li>New: \u201cConservative\u201d homepage  mode \u2014 uses the modified time of the static front page (falls back to Smart if the homepage is the posts index).<\/li>\n<li>Improved: \u201cSmart\u201d homepage  now also considers ENABLED custom post types (detected) when calculating freshness. Custom taxonomies are intentionally ignored (performance-friendly).<\/li>\n<li>I18N: Added a new translatable string for the \u201cConservative\u201d mode.<\/li>\n<li>No breaking changes. Fully backward-compatible with existing settings.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Performance: bulk calculation of taxonomy  in a single SQL per taxonomy (massively faster on large sites).<\/li>\n<li>Safety: optional soft cap for taxonomy  via filter <code>lwsgp_tax_lastmod_cap<\/code> (default 0 = unlimited).<\/li>\n<li>No breaking changes. Existing behavior preserved; features remain off by default.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New: support for any detected custom post types (CPT) and custom taxonomies \u2014 can be enabled in settings.<\/li>\n<li>New: <code>&lt;lastmod&gt;<\/code> support for categories, tags, author archives, and date archives (based on the latest modified post).<\/li>\n<li>Improved: admin UI now shows detected CPT\/taxonomies with individual checkboxes (off by default).<\/li>\n<li>Improved: translation support \u2014 added translators\u2019 comments for placeholder strings.<\/li>\n<li>Fixed: consistency of <code>&lt;lastmod&gt;<\/code> timestamps across all archive types.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved security: removed use of <code>FILTER_UNSAFE_RAW<\/code>, added stricter sanitization of server variables.<\/li>\n<li>Added clearer HTTP diagnostic headers (including <code>X-LWSGP-Cache: FILE<\/code> for file mode).<\/li>\n<li>Updated prefixes to avoid collisions (all code, options and transients now use <code>lwsgp_<\/code>).<\/li>\n<li>General code cleanup and small stability fixes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable release.<\/li>\n<li>Added smart homepage <code>&lt;lastmod&gt;<\/code> calculation (blocks, WooCommerce, DW Q&amp;A).<\/li>\n<li>Added split mode (sitemapindex + multiple parts up to 50,000 URLs each).<\/li>\n<li>Added better conflict detection and admin notices.<\/li>\n<li>Added diagnostic headers and comments for easier debugging.<\/li>\n<li>Improved caching in dynamic mode (ETag, Last-Modified, HIT\/MISS).<\/li>\n<li>Improved security checks and permission handling.<\/li>\n<li>Many small fixes and code cleanup.<\/li>\n<li>Based on previous 0.1 (initial release) and 0.2 (major improvements).<\/li>\n<\/ul>","raw_excerpt":"XML sitemap generator for WordPress with file or dynamic mode. Supports all public post types and taxonomies. Optional Google News sitemap.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/252518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=252518"}],"author":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/andreyberestov"}],"wp:attachment":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=252518"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=252518"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=252518"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=252518"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=252518"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=252518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}