{"id":384135,"date":"2026-10-17T15:27:51","date_gmt":"2026-10-17T15:27:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/site-to-static\/"},"modified":"2026-10-18T16:30:42","modified_gmt":"2026-10-18T16:30:42","slug":"aouwal-static-site-export","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/aouwal-static-site-export\/","author":14015969,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Aouwal Static Site Export","header_author":"Abdul Aouwal","header_description":"Export your WordPress site to a fully static HTML bundle (with localized assets) ready to push to GitHub and deploy on Cloudflare Pages.","assets_banners_color":"97d5f1","last_updated":"2026-10-18 16:30:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/aouwalitshikkha\/site-to-static","header_author_uri":"https:\/\/abdulaouwal.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":89,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"aouwal","date":"2026-10-17 15:27:26","revision":3752075},"1.0.3":{"tag":"1.0.3","author":"aouwal","date":"2026-10-18 16:30:42","revision":3753330}},"upgrade_notice":{"1.0.3":"<p>Fixes link hint handling and localizes web app manifest icons in exports. Update recommended.<\/p>","1.0.2":"<p>All remote requests now use the WordPress HTTP API. Update to stay secure and compliant with the WordPress.org plugin guidelines.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3752074,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3752074,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3752074,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3752074,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3752074,"resolution":"1","location":"assets","locale":"","width":1900,"height":2226},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3752074,"resolution":"2","location":"assets","locale":"","width":1920,"height":1170},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3752074,"resolution":"3","location":"assets","locale":"","width":1900,"height":1245}},"screenshots":{"1":"Configure what to export: post types, archives, asset handling, URL style, cleanup options and generated files.","2":"Run the export and follow the live progress log, then download the finished ZIP.","3":"Deploy with the built-in GitHub and Cloudflare Pages steps, including the generated _redirects and _headers notes."}},"plugin_section":[],"plugin_tags":[287271,1859,1673,17693,250566],"plugin_category":[59],"plugin_contributors":[287272],"plugin_business_model":[],"class_list":["post-384135","plugin","type-plugin","status-publish","hentry","plugin_tags-cloudflare-pages","plugin_tags-export","plugin_tags-github","plugin_tags-static","plugin_tags-static-site","plugin_category-utilities-and-tools","plugin_contributors-aouwal","plugin_committers-aouwal"],"banners":{"banner":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/banner-772x250.png?rev=3752074","banner_2x":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/banner-1544x500.png?rev=3752074","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/icon-128x128.png?rev=3752074","icon_2x":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/icon-256x256.png?rev=3752074","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/screenshot-1.png?rev=3752074","caption":"Configure what to export: post types, archives, asset handling, URL style, cleanup options and generated files."},{"src":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/screenshot-2.png?rev=3752074","caption":"Run the export and follow the live progress log, then download the finished ZIP."},{"src":"https:\/\/ps.w.org\/aouwal-static-site-export\/assets\/screenshot-3.png?rev=3752074","caption":"Deploy with the built-in GitHub and Cloudflare Pages steps, including the generated _redirects and _headers notes."}],"raw_content":"<!--section=description-->\n<p>Aouwal Static Site Export turns your WordPress site into a static HTML site. It crawls every public page, captures the fully rendered HTML, downloads and localizes every asset (CSS, JS, images and fonts), and packages the result into one portable ZIP file.<\/p>\n\n<p>The export is a plain folder of HTML files and assets. You can commit it to GitHub and deploy it on Cloudflare Pages, or host it on any static host or CDN. No WordPress, PHP or database is needed to serve it.<\/p>\n\n<p>Author: <a href=\"https:\/\/abdulaouwal.com\">Abdul Aouwal<\/a>, Technical SEO Consultant.<\/p>\n\n<h4>What you can export<\/h4>\n\n<ul>\n<li>Posts, pages and custom post types.<\/li>\n<li>Taxonomy archives, author archives and date archives.<\/li>\n<li>RSS feeds.<\/li>\n<li>A <code>404.html<\/code> page, plus <code>sitemap.xml<\/code> and <code>robots.txt<\/code>.<\/li>\n<li>A Cloudflare Pages <code>_redirects<\/code> file and a <code>_headers<\/code> file for caching.<\/li>\n<\/ul>\n\n<h4>How the export works<\/h4>\n\n<ol>\n<li>The plugin discovers every public URL on your site.<\/li>\n<li>It fetches the fully rendered HTML of each page through the WordPress HTTP API.<\/li>\n<li>It downloads and localizes assets, including recursive CSS <code>url()<\/code> and <code>@import<\/code> references.<\/li>\n<li>It rewrites internal links to portable relative or root-absolute URLs.<\/li>\n<li>It removes server-side features that cannot run on a static host.<\/li>\n<li>It packages everything into a single ZIP file you can download.<\/li>\n<\/ol>\n\n<h4>What the export cleans up<\/h4>\n\n<ul>\n<li>Removes comment forms, comment sections and comment feeds.<\/li>\n<li>Removes search forms.<\/li>\n<li>Strips WordPress version tags.<\/li>\n<li>Strips staging \"noindex\" robots meta so the exported site stays indexable.<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Chunked, timeout-safe export with a live progress log.<\/li>\n<li>Optional WP-CLI command: <code>wp aouwal-static-export run<\/code>.<\/li>\n<li>Optional, invisible author credit. It is off by default and can be enabled in Settings.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>aouwal-static-site-export<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin in the Plugins screen.<\/li>\n<li>Open the Static Export menu and configure the settings.<\/li>\n<li>Run an export, then download the ZIP file.<\/li>\n<li>Follow the Deploy tab to publish the site.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20aouwal%20static%20site%20export%20do%3F\"><h3>What does Aouwal Static Site Export do?<\/h3><\/dt>\n<dd><p>It converts your WordPress site into a static HTML site. The plugin crawls each public page, saves the rendered HTML, downloads and localizes all assets, and packages the result into a ZIP file. You can then host the site anywhere without WordPress, PHP or a database.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>Standard themes work well. Sites that depend on client-side JavaScript, such as WooCommerce carts and some page builders, may not work fully once they are static. Always test the exported site before you publish it.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20search%20and%20comments%3F\"><h3>What happens to search and comments?<\/h3><\/dt>\n<dd><p>Search and comments are server-side features, so they cannot run on a static host. The plugin removes search forms, comment forms and comment feeds from the export. There is no built-in replacement for them.<\/p><\/dd>\n<dt id=\"does%20the%20export%20include%20any%20credit%20or%20branding%3F\"><h3>Does the export include any credit or branding?<\/h3><\/dt>\n<dd><p>No, not unless you enable it. In Settings, under Attribution, you can turn on an invisible, source-code-only credit. It is off by default and never appears in the browser or in the exported pages your visitors see.<\/p><\/dd>\n<dt id=\"which%20hosts%20can%20i%20deploy%20the%20export%20to%3F\"><h3>Which hosts can I deploy the export to?<\/h3><\/dt>\n<dd><p>You can host the exported folder on any static host or CDN. The plugin generates files for Cloudflare Pages, and the Deploy tab includes step-by-step GitHub and Cloudflare Pages instructions. Netlify, GitHub Pages and Amazon S3 also work with the same output.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20know%20how%20to%20code%3F\"><h3>Do I need to know how to code?<\/h3><\/dt>\n<dd><p>No. You run the export from the WordPress admin and download a ZIP file. The Deploy tab gives you copy-and-paste commands for GitHub and Cloudflare Pages, so you can publish the site without writing any code.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20change%20my%20live%20site%3F\"><h3>Does the plugin change my live site?<\/h3><\/dt>\n<dd><p>No. The plugin only reads your content and writes the export to a files folder inside your own WordPress uploads directory. Your live site, database and settings stay unchanged, and you can delete the export files at any time.<\/p><\/dd>\n<dt id=\"which%20wordpress%20and%20php%20versions%20are%20supported%3F\"><h3>Which WordPress and PHP versions are supported?<\/h3><\/dt>\n<dd><p>The plugin requires WordPress 6.0 or later and PHP 7.4 or later. It is tested up to WordPress 7.1. It uses only the WordPress HTTP API and the WordPress filesystem, so it works on standard shared hosting.<\/p><\/dd>\n<dt id=\"can%20i%20update%20the%20exported%20site%20later%3F\"><h3>Can I update the exported site later?<\/h3><\/dt>\n<dd><p>Yes. Run a new export to create a fresh ZIP, then push the updated files. On Cloudflare Pages, every push to your connected repository redeploys the site automatically, so updates take only a few minutes.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20on%20large%20sites%3F\"><h3>Does the plugin work on large sites?<\/h3><\/dt>\n<dd><p>Yes. The export runs in batches, which keeps each request short and avoids server timeouts. If your server is slow, lower the batch size in Settings. Very large sites take more time and produce a larger ZIP file.<\/p><\/dd>\n<dt id=\"is%20the%20exported%20site%20good%20for%20seo%3F\"><h3>Is the exported site good for SEO?<\/h3><\/dt>\n<dd><p>Yes. The export keeps your page URLs, titles and content, generates a <code>sitemap.xml<\/code> and <code>robots.txt<\/code>, and strips version tags and staging \"noindex\" meta. Because the pages are static HTML, they load quickly and are easy for search engines and AI systems to crawl.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed link hint tags (preconnect, dns-prefetch, prerender, profile) being downloaded and rewritten to broken local files.<\/li>\n<li>Fixed multi-token rel values (for example \"preconnect dns-prefetch\") being misclassified.<\/li>\n<li>Localize web app manifest icon and shortcut URLs so they work on the static site.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed the non-HTTP-API remote fetch fallback from the crawler; all remote requests now use the WordPress HTTP API (<code>wp_remote_get<\/code>) exclusively.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to \"Aouwal Static Site Export\" (aouwal_) with a distinctive slug. Previous sts_ settings and job table are migrated automatically on activation.<\/li>\n<li>Export output is written via WP_Filesystem only, inside the plugin's own uploads directory.<\/li>\n<li>Server-side fetching is restricted to the site's own hosts and public IPs (SSRF hardening).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Renamed from the pre-release \"WP Static Export\" (wse_) to \"Site to Static\" (sts_). Leftover pre-release options and database table are removed automatically on activation.<\/li>\n<\/ul>","raw_excerpt":"Export your WordPress site to a static HTML bundle with localized assets, ready to host on GitHub and Cloudflare Pages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=384135"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aouwal"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384135"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384135"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384135"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384135"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384135"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}