StaticForge for Cloudflare Pages

Changelog

1.1.1

  • Fix: removed the plugin’s own injected “View details” row-meta link to prevent a duplicate entry, since WordPress now auto-injects “View details” for wp.org-hosted plugins. Row meta is now View details | Plugin Support | Contact Developer.

1.1.0

  • New: Bundle /wp-content/uploads/ into deploy setting — when ticked, the plugin scans every rendered page for uploads URLs (<img src>, srcset, og:image, JSON-LD image/logo/thumbnailUrl, inline CSS url(), oEmbed thumbnails), fetches each file from the origin during rebuild, and ships them inside the Cloudflare Pages deploy at their original paths. Designed for shared-hosting origins (HostArmada, SiteGround, etc.) whose firewall blocks Cloudflare Worker / proxy IPs, making the standard /wp-content/* proxy approach return 520/522. Theme/plugin assets still load from origin; uploads cost scales with files actually referenced (CF dedupes unchanged hashes between deploys).
  • Fix: *.pages.dev 301 redirect is now a client-side JS snippet injected into every page rather than a functions/_middleware.js Pages Function. The Direct Upload API does not compile a functions/ directory or activate _worker.js advanced mode — those files are stored as static assets and never execute — so the previous server-side approach silently did nothing. The new JS redirect runs synchronously before any paint, preserves path + query + hash, and works on every deploy regardless of upload method. Canonical / og:url / JSON-LD continue to point at the live host so SEO consolidation remains correct.
  • Plugin renamed from “Send Static to Pages” to “StaticForge for Cloudflare Pages”. Folder slug, main file, text domain, all class/constant/function/option prefixes (SSTP_/sstp_ → SFORGE_/sforge_), and the sstp_full_rebuild cron hook moved over together.
  • One-time migration on plugins_loaded (priority 1): legacy sstp_settings, sstp_log, and any pending sstp_full_rebuild cron event are copied/rescheduled to the new keys/hook so existing installs upgrade without losing configuration. Guarded by a sforge_migrated_from_sstp flag.
  • uninstall.php now also removes legacy sstp_* keys and clears the sstp_full_rebuild cron hook.
  • WordPress 7.0 tested and audited — no deprecated API usage; admin-only integration so the iframed editor in WP 7.0 has no functional impact.
  • WordPress 7.0 Connectors API integration: registers a deployment_target connector (sforge-cloudflare-pages) on the wp_connectors_init action so the plugin appears on the central Connections screen and links back to the StaticForge settings page for credential management. Falls back silently on WP < 7.0.
  • Added plugin action links — Settings and Support on Ko-fi next to Deactivate.
  • Added plugin row meta — Plugin Support (WordPress.org forum) and Contact Developer.
  • Donate link moved to Ko-fi (https://ko-fi.com/gunjanjaswal).

1.0.1

  • New: social-aware dashboard noindex — robots.txt now explicitly allows /wp-content/uploads/ for facebookexternalhit / facebookcatalog / Twitterbot / LinkedInBot / Pinterestbot / WhatsApp / Slackbot / Discordbot / TelegramBot / Applebot / redditbot / Tumblr / iframely / Embedly / Mastodon / Bluesky / meta-externalagent. The X-Robots-Tag HTTP header is also skipped for media paths and social-scraper user agents so og:image previews resolve correctly when posts are shared.
  • New: *.pages.dev 301-redirect middleware — when the configured Public Site URL is a custom domain, the plugin emits functions/_middleware.js into the deploy that intercepts requests to <project>.pages.dev and permanently redirects them to the canonical live host. Auto-skipped when Public Site URL is itself a .pages.dev URL.
  • New: opt-in Rewrite /wp-content/ URLs setting plus a “Clean /wp-content/ URLs (advanced)” section in the in-plugin Setup Guide and README covering Cloudflare Worker and Nginx/Apache reverse-proxy setups for fully clean live URLs (og:image, JSON-LD image/logo, srcset).
  • New: standalone Person + ProfilePage JSON-LD module for author archives (emits even when an SEO plugin is active, with distinct @id suffix). sameAs auto-collected from user_url + user_meta for Twitter/X, Facebook, LinkedIn, Instagram, YouTube, GitHub, Pinterest, TikTok, Threads, Medium, Mastodon, Bluesky. Optional jobTitle / worksFor from custom meta.
  • New: dashboard auto-noindex on activation — physical Disallow: / robots.txt at webroot (existing file backed up to robots.txt.sforge-backup), wp_robots filter, X-Robots-Tag HTTP header, robots_txt filter. Plugin’s own export fetches are exempt via X-SFORGE-Export header. Restored on deactivation.
  • New: fallback sitemap.xml — when origin has no sitemap, plugin builds a standards-compliant <urlset> from native WP data (homepage + selected post types + taxonomy term archives + author archives).
  • New: granular sitemap generator settings — per-post-type checkboxes, include/exclude homepage / taxonomies / authors, and a split-mode toggle that emits a <sitemapindex> referencing per-type sub-sitemaps. Filter: sforge_sitemap_groups.
  • New: featured image LCP boost — auto-adds fetchpriority=”high”, loading=”eager”, decoding=”async” on the post’s featured image. Works on any theme using the_post_thumbnail() / get_the_post_thumbnail().
  • New: activity-log visibility for sitemap decisions — distinguishes “mirrored from origin” vs “generated locally (single|split mode)” vs explicit warnings when fallback yields no groups.
  • New: auto-backfill new option defaults on plugins_loaded so existing installs pick up new settings without a deactivate/reactivate.
  • Improved: URL rewriter now also handles escaped forward slashes (https://origin/…) so JSON-LD, REST embeds, and inline JSON payloads get rewritten to the public host. /wp-content/ skip preserved in both literal and escaped forms.
  • Improved: mirrored sitemaps now strip <?xml-stylesheet … ?> directives and rewrite protocol-relative //host references so the dashboard host doesn’t leak into the public sitemap.
  • Improved: Sitemap: line in custom robots.txt is auto-managed — any user-typed directive is stripped and replaced with the actual deployed sitemap path (sitemap.xml / sitemap_index.xml / wp-sitemap.xml / etc.) so the URL is never broken.
  • Improved: settings page redesign — colour-coded section cards, hero header, status pill, live activity log, “Setup Guide” link.
  • Improved: filemtime-based cache busting on plugin admin CSS/JS so settings UI updates show immediately.
  • Improved: deploy log now reports per-batch upload progress (count + size + duration + cumulative total).
  • Improved: bumped PHP memory limit to 512 MB during full rebuild.
  • Improved: multipart/form-data deployment POST (was URL-encoded — Cloudflare rejected as “Request body is incorrect”).
  • Improved: Dashicons explicitly enqueued as a stylesheet dependency on plugin admin pages.
  • Improved: “Rebuild + Deploy Now” / “Test Connection” / “Clear Log” now scroll to and briefly highlight the Activity Log section.
  • Fix: fatal parse error caused by ?> inside a // line comment terminating the <?php block. Replaced with block comment.
  • Fix: CDATA-wrapped <loc> entries in sitemap-index files now expand correctly to child sitemap URLs.

1.0.0

  • Initial public release.
  • Cloudflare Pages Direct Upload API client (multipart/form-data deployment).
  • Whole-site crawl: posts, pages, custom post types, taxonomy and author archives, homepage.
  • CSS inlining for self-contained pages.
  • Featured image LCP boost: fetchpriority=”high”, loading=”eager”, decoding=”async”.
  • Built-in SEO metadata injection: meta description, robots, canonical, Open Graph, Twitter Card.
  • JSON-LD schemas: WebSite + SearchAction, Organization, Article, WebPage, Person + ProfilePage on author archives, CollectionPage on taxonomy archives, BreadcrumbList, auto-detected FAQPage and HowTo.
  • Two-tier dedup: auto-pause all injection on general SEO plugins (Yoast, Rank Math, AIO SEO, SEOPress, The SEO Framework, Slim SEO, Squirrly, SmartCrawl, WP Meta SEO); pause only JSON-LD on schema-only plugins (saswp, Schema Pro, WPSSO, Schema by Hesham, Schema App, Magazine3 Schema variants).
  • Sitemap mirroring with CDATA-wrapped <loc> support, <?xml-stylesheet ?> strip, and protocol-relative URL rewriting.
  • Fallback sitemap.xml auto-generated from the crawled URL list when origin exposes none.
  • Granular sitemap generator settings: per-post-type, homepage, taxonomies, authors, single vs split (sitemapindex + per-type sub-sitemaps).
  • Editable robots.txt for the live site with auto-managed Sitemap: directive matching the actually-deployed sitemap path.
  • Auto-backfill of new option keys on plugin update so existing installs pick up new defaults without deactivate/reactivate.
  • Dashboard auto-noindex on activation (physical robots.txt + filters + X-Robots-Tag header), restored on deactivation.
  • Defensive noindex stripping on export.
  • Auto-deploy on publish/update with configurable debounce.
  • Live activity log with auto-refresh and status indicator.
  • Built-in Setup Guide page and WordPress contextual Help tabs.

Plugin Website
Visit website

Version:
1.1.1
Last Updated
May 26, 2026
Requires
WordPress 5.8
Tested Up To
WordPress 7.0
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.