WP Manifestindependent plugin directory
manifest / updates / synchronizer

WCP Synchronizer

Wordpress Plugin for sync content between site A & site B

by Nikita Babichev · github.com/joydumply/synchronizer

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/joydumply/synchronizer/archive/refs/heads/main.zip

Readme

WCP Synchronizer

WordPress plugin for two-way content synchronization between two WordPress sites via REST API.

What it syncs

  • Posts and pages (with all meta, ACF fields, featured image, taxonomies)
  • Media files (with alt text, title, caption)
  • Taxonomy terms (with all term meta and Yoast data)

Requirements

  • WordPress 5.6+
  • PHP 7.4+
  • Both sites must have the plugin installed

Setup

  1. Install and activate the plugin on both sites
  2. Go to Settings → WCP Synchronizer on each site
  3. Set the same API Key on both sites
  4. Set the Remote Site URL pointing to the other site
  5. Set the Allowed Domain to the current site's production hostname (e.g. example.com) — without protocol or trailing slash
  6. Enable sync with the toggle

Domain protection

The Allowed Domain field is a safety lock against accidental sync when a developer pulls the production database locally.

  • If the field is empty — sync is always disabled
  • If the current site's domain does not match the configured hostname — sync is automatically disabled and a warning is shown in the admin panel
  • If the domains match — sync works normally

Recommended workflow:

  1. Set Allowed Domain to your production hostname on the production site before any DB snapshots are taken
  2. When a developer pulls the DB locally, the local domain won't match, so sync will be automatically blocked — no risk of local changes accidentally reaching the production remote site

How it works

Both sites are identical — each one can send and receive. When you save a post, term, or upload media, the plugin sends it to the remote site via REST API using a shared API key for authentication.

ID collisions are handled automatically. If the remote ID is taken by a different post type, a new entry is created and the mapping is stored.

API endpoints

POST   /wp-json/content-sync/v1/post
DELETE /wp-json/content-sync/v1/post/{id}
POST   /wp-json/content-sync/v1/media
PATCH  /wp-json/content-sync/v1/media/{id}
DELETE /wp-json/content-sync/v1/media/{id}
POST   /wp-json/content-sync/v1/taxonomy
DELETE /wp-json/content-sync/v1/taxonomy/{id}

Logs

Settings page has a Logs tab where you can filter sync events by type and status.

Read the full README on GitHub →