=== Nazca Staging to Live Content Sync ===
Contributors: coderjuno, myomyintaung
Donate link: https://myomyintaung.com/wordpress-plugins/nazca-staging-live-content-sync/index.html
Tags: sync, staging, migration, rest-api, content-sync
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.2.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Selective content, media, menu, and customizer settings synchronization between a Staging and Live WordPress site.

== Description ==

Nazca Staging to Live Content Sync is a reliable WordPress plugin that enables selective content synchronization between a Staging (Sender) WordPress site and a Live (Receiver) WordPress site. It eliminates the need for full database migrations when pushing content updates, allowing you to sync specific posts, pages, custom post types, media files, menus, and customizer theme settings with just a few clicks.

= Features =

* **Selective Content Sync**: Choose exactly which post types can be synced and push them individually or in bulk.
* **Media Library Sync**: Sync media attachments and all generated image sizes directly from the Media Library list view.
* **Featured Image & Inline Media Sync**: Automatically downloads and associates featured images and inline media attachments.
* **Smart URL Replacement**: Safely handles URL replacements (Staging URL -> Live URL) even within nested arrays, objects, and serialized strings without corrupting data.
* **Navigation Menu Sync**: Synchronize WordPress menus, items, and assign them to theme locations.
* **Customizer Settings Sync**: Synchronize theme modifications and Customizer settings safely.
* **HMAC-Secured Communication**: All REST API requests are authenticated with HMAC SHA-256 signatures verified using constant-time comparison.
* **Constant-Based Secret Key**: Define NAZCA_SYNC_SECRET_KEY in wp-config.php to keep the secret key out of the database entirely.

== Installation ==

1. Upload the `nazca-staging-live-content-sync` folder to the `/wp-content/plugins/` directory of both your Staging and Live sites.
2. Activate the plugin through the 'Plugins' menu in WordPress on both sites.
3. On the Live site (Receiver), go to **Nazca Content Sync -> Settings**, set Mode to `Live / Receiver`, generate a Shared Secret Key, and configure the Registered Sender URL.
4. On the Staging site (Sender), go to **Nazca Content Sync -> Settings**, set Mode to `Staging / Sender`, enter the Remote Target URL and Shared Secret Key, and select Allowed Post Types.

== Changelog ==

= 1.2.0 =
* WordPress.org repository compliance: Prefixed all functions/options/classes with distinct prefix (nazca_), enqueued all scripts, updated Plugin URI, and enhanced input sanitization.
* Removed remote raw plugin and theme archive deployment to adhere to WordPress.org directory security guidelines.
* Modernized sync progress modal UI with custom vector animations and live batch metric statistics.

= 1.1.0 =
* Security hardening release: NAZCA_SYNC_SECRET_KEY constant support, safe deserialization, SSRF protection, and Media Library list sync.

= 1.0.0 =
* Initial release.
