Popis
Miroir keeps a local WordPress environment and one or more remote sites in sync, with an interface designed for non-technical users.
The same plugin embeds two roles: an orchestrator on the local site and an agent on each remote site. They communicate over the WordPress REST API (authenticated with Application Passwords) and, optionally, SFTP.
Features:
- Push (local to production) and Pull (production to local) of the database.
- Safe search-replace that handles PHP-serialized data, escaped JSON (Gutenberg blocks) and
wp_options. - Automatic snapshot and rollback before a database import.
- Comparison screen with a per-component diff and data-loss warnings.
- File deployment of specific themes and plugins.
- Editorial content merge by post type (GUID-matched, no deletion; WooCommerce excluded).
- One-click deployment shortcuts.
- REST (chunked) and SFTP transport.
Snímky obrazovky



Instalace
- Install and activate Miroir on the remote (production) site.
- Install and activate Miroir on the local site.
- On the local site, open Miroir, add the remote URL and approve the connection.
Nejčastější dotazy
-
Does this replace a backup plugin?
-
No. Miroir is a development and deployment tool, complementary to a general backup solution.
-
Is WooCommerce supported?
-
Yes for full database sync. Per-type content merge intentionally excludes WooCommerce products and orders.
-
Will a push delete data on the target?
-
A full database push replaces the target database, so rows that exist only on the
target are removed. The comparison screen warns about this before you confirm, and
a snapshot is taken so a rollback is possible. Content merge (by post type) and file
deployment are additive and never delete. -
What if my host has no SSH/SFTP?
-
Everything works over the REST API (chunked transfer). SFTP is optional and only
speeds up file transfers on hosts that provide SSH. -
Are my credentials safe?
-
Yes. Application Passwords and SFTP secrets are encrypted at rest (AES-256-GCM) and
never logged in clear text. The agent only answers users withmanage_options. -
Will large sites time out?
-
The database search-replace is resumable (processed in time-bounded chunks), file
transfers are chunked, and native mysqldump/mysql are used when available.
Recenze
Pro tento plugin nejsou žádné recenze.
Autoři
Miroir Local Sync je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.
SpolupracovníciPřeložte “Miroir Local Sync” do svého jazyka.
Zajímá vás vývoj?
Prohledejte kód, podívejte se do SVN repozitáře, nebo se přihlaste k odběru protokolu vývoje pomocí RSS.
Přehled změn
0.5.0
- Internationalization: all source strings are now in English (the WordPress.org standard), so the plugin can be translated on translate.wordpress.org and the directory page reads consistently with the code.
- Bundled French translation (fr_FR) in /languages: the admin interface and the activity log display in French on French sites out of the box.
- Loads the bundled text domain on init (load_plugin_textdomain) so translations work on WordPress 6.0–6.6; 6.7+ auto-loads them.
- Included a translation template (miroir-local-sync.pot) for further locales.
0.4.11
- Progress transients: the literal prefix sumotori_sync_prog_ is now visible at every set_transient() call site (no more dynamic keys), so all options/transients are verifiably prefixed.
- Renamed the JS localized object MiroirSync to sumotori_sync_cfg (consistent unique prefix).
- Hardened storage confinement: chunk writes (Agent) and downloads (Transport) now refuse any path outside the protected storage folder under wp_upload_dir() (uploads/miroir-local-sync-{key}/). No data is ever written inside the plugin folder.
0.4.10
- Removed ini_set(‚display_errors‘) from the AJAX guard (no error-reporting changes in production code).
- Progress transient key is now force-prefixed with sumotori_sync_ in the push/pull setters.
0.4.9
- Storage folder in uploads now uses the plugin slug prefix (miroir-local-sync-).
0.4.8
- Portability: use WP_PLUGIN_DIR and get_theme_root() instead of hardcoded WP_CONTENT_DIR paths. Correct readme contributor.
0.4.7
- Renamed to Miroir Local Sync (slug miroir-local-sync) for a distinctive, descriptive name.
0.4.6
- Text domain aligned to the plugin slug (miroir). Plugin Check fixes: escaped CTA button attribute, translators comment, composer.json kept in the package.
0.4.5
- Security hardening: search-replace unserialize restricted to stdClass (no object injection); transfer chunks now capped (size guard against disk-fill); manual connection validates the URL like the auto flow.
- i18n: Push/Pull button label no longer hardcoded after an operation.
0.4.4
- After synchronizing a component, its row status flips from „modifié“ to „à jour“ (kept visible until the next refresh).
0.4.3
- The site „⋯“ menu now closes on outside click or Escape.
- Removed the per-component „Détails“ button (the (i) panel covers it).
0.4.2
- Comparer: clickable (i) on each component reveals file/size details below the row; „N components up to date“ collapsible to find any already-synced component.
- Per-component detail now includes total size (LOCAL/PROD files + size).
0.4.1
- Per-component „Synchroniser“ button on the Comparer page: push a single plugin/theme to prod in delta, with a live per-phase spinner.
- Component versions shown per side (LOCAL vX · PROD vY); file-count detail moved to an (i) tooltip to keep rows clean.
- Consistent „Synchroniser“ terminology across components and database.
- Manifest hardening: version „0“ handled, null-safe count/size reads.
0.4.0
- Delta deployment: one-click shortcuts now send only changed files (hash diff vs the remote), ~90% less data on the wire.
- Comparer page redesigned into per-category cards — including in the sync and expanding the detail are now decoupled (inspect without checking).
- Local and remote analysis run in parallel (~2x faster), with live per-phase progress.
- Lightweight component signature (version + size + file count) for an instant overview; exact per-file hashing kept for drill-down and deployment.
- Dashboard redesigned: centered layout, compact collapsible „add a site“ tile, denser sections.
- Fixes: shortcut edit/delete (id casing), Comparer scope now actually filters, raised memory limit for heavy operations.
0.3.0
- Editorial content merge by post type.
- One-click deployment shortcuts.
- Per-component file deployment and one-click agent update.
0.2.0
- File synchronization, SFTP transport, per-component diff, AJAX progress.
0.1.0
- Initial connection flow, database push/pull, search-replace engine.
