Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/brightcolor/wp-multi-push-syndicator/archive/refs/heads/main.zip# WP Multi Push Syndicator
Production-ready WordPress plugin foundation to push a post from one source site to one or many remote WordPress target sites.
Features
- Multi-target endpoint management in wp-admin.
- Per-post target selection (multi-select checkboxes in post sidebar metabox).
- Per-target create/update logic with remote post ID mapping.
- Per-target category mapping (source category slug/ID -> remote category ID).
- Media pipeline:
- featured image upload,
- inline content image upload and URL replacement,
- relevant attachment upload.
- Per-target scheduling with pluggable strategies:
fixed_delay,random_delay,preferred_time.
- Enforced minimum delay (default 10 min) and maximum scheduling window cap.
- Deterministic scheduling log reason and metadata.
- Rewrite-ready architecture via transformer interface + manager + filters.
- Database logging and per-post/per-target status visibility.
- GitHub Releases update checker (zip asset based).
- SemVer-first project structure.
Requirements
- WordPress 6.0+
- PHP 7.4+
- Source and targets must all expose WordPress REST API.
- Target sites must have users with permission to create/edit posts and upload media.
Installation
- Download release ZIP from GitHub Releases.
- Upload in WordPress:
Plugins -> Add New -> Upload Plugin. - Activate
WP Multi Push Syndicator. - Open
WP Multi Pushmenu and configure global settings. - Add one or more target endpoints.
Target Site Preparation
For each target WordPress site:
- Ensure REST API is reachable (
/wp-json/wp/v2). - Create or choose an editor/author account with post/media rights.
- Generate an Application Password:
- User Profile -> Application Passwords -> Add New.
- Save
username+application passwordin endpoint config.
Workflow
- Configure target endpoints in plugin settings.
- Edit a post and select one or more targets in
Push Targetsmetabox. - Save/update/publish the post.
- Plugin creates or updates remote posts per target.
- View global logs in
WP Multi Push -> Logs. - Inspect per-target status in post sidebar (
Last Push Status).
Category Mapping
Targets can use different category taxonomies/IDs than the source site.
Per target, configure Category Mapping in settings:
- one mapping per line,
- format:
source_slug_or_id:remote_category_id, - examples:
news:12events:175:23
During push, mapped remote category IDs are sent in the post payload (categories).
Unmapped source categories are logged with warning level.
Scheduling Model
Global defaults:
- Minimum delay minutes (hard floor, never violated)
- Maximum delay days (hard cap, prevents uncontrolled far future scheduling)
- Preferred-time tolerance (+/- minutes)
- Default strategy and fallback values
Per-target overrides:
- Strategy key
- Fixed delay value
- Random min/max delay
- Preferred times list and tolerance
See docs: docs/SCHEDULING.md
Rewrite Extension Point
Current release ships with NoopTransformer (no rewrite).
Add custom rewrite via:
WMPS\Content\ContentTransformerInterfacewmps_register_transformersfilter- target setting
enabled_transformer - optional
wmps_transform_payloadfilter
See docs: docs/REWRITE-EXTENSION.md
GitHub Updates
The updater reads latest release from GitHub API and looks for .zip release assets.
Configure repository in plugin settings (owner/repo).
See docs: docs/GITHUB-RELEASES.md
Versioning
This project follows Semantic Versioning.
MAJOR: breaking changesMINOR: backwards-compatible featuresPATCH: bug fixes
Current: 0.2.0 (pre-1.0 foundational release).
Security
- Capability checks for all admin actions.
- Nonce checks for settings and post metadata writes.
- Input sanitization and output escaping in admin UI.
- Explicit error logging for remote/API failures.
Project Structure
See docs/ARCHITECTURE.md.
Wiki
Wiki starter pages are included in /wiki for direct GitHub Wiki publishing.
License
GPL-2.0-or-later.