=== Volume Post Sync Manager ===
Contributors: wearevolume
Tags: sync, deployment, staging, post, content
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Push and pull individual posts between WordPress environments.

== Description ==

Post Sync Manager lets you move posts between your local, staging, and production WordPress sites with a single click — directly from the Gutenberg editor.

**Free features:**
* Push and pull posts, pages, and custom post types between environments
* Sync status indicator (in sync, remote newer, local newer, conflict)
* Secret-key authentication between sites
* Full sync log with pagination

**[Pro version](https://postsyncmanager.com) features:**
* Bulk sync page with per-row push, pull, and status check

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/`
2. Activate the plugin through the **Plugins** menu in WordPress
3. Go to **Post Sync Manager → Settings** and set your environment name and secret key
4. Add your remote environments (URL + their secret key)
5. Open any post or page in the Gutenberg editor — the **Post Sync Manager** panel will appear in the sidebar

== Frequently Asked Questions ==

= How does authentication work? =

Each site has a secret key. When pushing or pulling, the request is signed with the destination site's secret key. Requests with an invalid or missing key are rejected.

= Does it sync media? =

Yes. Featured images and inline images are included when syncing a post.

= Can I sync custom post types? =

Yes. The free plugin supports all public post types, including custom post types.

= I'm migrating my site — will my settings be preserved? =

Post Sync Manager stores its data in two custom database tables: `{prefix}post_sync_manager` (your environment configuration and secret keys) and `{prefix}post_sync_log` (sync history). When migrating, exclude both tables to preserve your destination site's settings. In WP Migrate DB Pro, go to **Advanced Settings** and add both table names to the excluded tables list. In All-in-One WP Migration, use the **Advanced Options** to exclude them. If you do a full migration without excluding these tables, go to **Post Sync Manager → Settings** and reconfigure your environment before syncing.

== External Services ==

This plugin communicates **only between your own WordPress sites** when pushing or pulling posts. No data is routed through any third-party server.

* **What is sent:** post content, post meta, and media attachments belonging to the post being synced
* **Where it goes:** directly to the remote WordPress site URL you configure in Settings
* **Authentication:** requests are authenticated with a secret key you set — no external accounts required

== Upgrade Notice ==

= 1.0.2 =
Prevents repeated duplicate media imports during multi-environment and round-trip syncs.

= 1.0.1 =
Fixes HTML and ACF formatting corruption and improves media syncing between environments.

== Changelog ==

= 1.0.2 =
* Prevented repeated duplicate media imports when content travels through multiple environments or returns to its origin.
* Preserved each attachment's originating URL across sync hops while retaining compatibility with existing payloads.

= 1.0.1 =
* Fixed escaped HTML, line breaks, and links becoming corrupted in ACF WYSIWYG and repeater fields.
* Fixed Gutenberg Custom HTML blocks changing during push and pull.
* Added syncing and URL rewriting for inline images and ACF WYSIWYG media.
* Added destination ID remapping for ACF image and gallery fields.
* Improved responsive image and `srcset` handling.
* Hardened post permissions and push-session validation.

= 1.0.0 =
* Initial release
