=== Static JSON Export with CORS ===
Contributors: aritrhk
Donate link: https://aritrhk.com/sjec
Tags: cors, headless wordpress, static json, jamstack, rest api
Requires at least: 5.6
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Generate secure, fast CORS-enabled static JSON feeds of your posts and pages for external applications or headless setups.

== Description ==

Static JSON Export with CORS is a lightweight, secure WordPress plugin designed to export your published posts, pages, or custom post types into highly-optimized static JSON files.

Feeds are generated automatically when content changes and served cleanly through a WordPress REST API endpoint (`GET /wp-json/sjec/v1/feed?name=YOUR_FEED_NAME`) with a customizable CORS origins whitelist.

= Key Features =
* **Headless CMS Support:** Export a lightweight post index, chunked paginated page files, and detailed individual post files under a subfolder.
* **REST API Endpoints:** Serve generated static JSON feeds via `GET /wp-json/sjec/v1/feed?name=YOUR_FEED_NAME` and individual posts via `GET /wp-json/sjec/v1/post?feed=FEED&slug=SLUG` with full CORS support.
* **Granular CORS Management:** Enter multiple allowed domains (Origins) in a whitelist via the admin panel.
* **Single JSON Feed:** Create a highly optimized JSON feed for your primary post type.
* **Pretty-Printed JSON:** Clean and readable JSON outputs for easy debugging.
* **Custom Field Mapping:** Include taxonomy terms or custom meta fields directly in the output.
* **Flexible Querying:** Select targeted post types, filter by a single taxonomy, adjust output limits, and sort chronologically.
* **Value-Added Dashboard:** Monitor folder write privileges, payload sizes, item counts, and preview raw JSON output (index, page 1, and individual posts).
* **GPLv2 & WordPress.org Guidelines Compliant:** Fully sanitized inputs, nonce validations, and strict path traversal protection.

= PRO Features Available =
Unlock even more capabilities:
* **Multiple JSON Feeds:** Manage separate JSON endpoints for multiple post types.
* **Payload Minification:** Shrink JSON payload sizes for lightning fast API responses.
* **Advanced Taxonomy Filtering:** Use AND/OR logic to combine multiple taxonomy constraints.
* **Sized Featured Images:** Export structured arrays containing multiple sizes (thumbnail, medium, large, full) for featured images (FREE version supports thumbnail URL only).
* **Standalone High-Speed API Endpoint:** Serve static JSON directly via `api.php` bypassing the WordPress core bootstrap entirely for sub-millisecond response times under heavy traffic.
* **Webhook Integration:** Automatically notify external services or trigger rebuilds whenever post data is updated.

== Installation ==

1. Upload the `static-json-export-cors` folder to the `/wp-content/plugins/` directory, or upload the ZIP file directly via the WordPress admin area.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Navigate to **JSON Export CORS** in the WordPress admin menu to configure your CORS origins and feed structures.

== Frequently Asked Questions ==

= How are feeds served via REST API? =
The plugin registers a custom WordPress REST API endpoint (`GET /wp-json/sjec/v1/feed?name=YOUR_FEED_NAME`) that serves the generated static JSON content with configured CORS headers attached.

= Can I use it on local environments? =
Yes. You can add local URLs (like `http://localhost:3000`) into the CORS Whitelist setting to debug integrations.

= How do I fix CORS errors (Access-Control-Allow-Origin)? =
If you see a browser error log like:
`Access to fetch at 'https://example.com/wp-json/sjec/v1/feed?name=default' from origin 'https://yourfrontend.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.`
You can resolve this by whitelisting your frontend domain:
1. Go to the WordPress Admin dashboard and navigate to **JSON Export CORS**.
2. Locate the **CORS Settings** section.
3. Add your frontend origin (e.g., `https://yourfrontend.com`) to the **CORS Whitelist** text area.
4. Save the settings. The plugin will automatically attach the `Access-Control-Allow-Origin: https://yourfrontend.com` header to all API requests coming from that domain.

== Changelog ==

= 1.1.0 =
* Add Headless CMS support with static page chunks pagination.
* Add static detailed JSON files generation for individual posts.
* Add custom WordPress REST route to serve individual posts dynamically with CORS headers.
* Update admin Dashboard to display URLs and live previews of paginated chunks and individual posts.
* Add PRO-only sized featured images output (FREE version limited to thumbnail URL string only).
* Upgrade WordPress Coding Standards requirement to version 3.4.1.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.1.0 =
Features full Headless CMS support with static pagination chunks, detailed individual post JSON endpoints, and dynamic featured image sizes (PRO).

= 1.0.0 =
Initial stable release with full CORS support and REST API endpoint.
