Version 2.6.1
PBJ Studio Sync pushes content one way, from a local WordPress Studio site (SQLite) to a live production site (MySQL). The same plugin installs on both sides and auto-detects which environment it is in:
Content moves over the WordPress REST API as native WP objects (posts, terms, meta, files), so the SQLite/MySQL differences are handled by WordPress itself — there is no raw SQL translation.
pbj-studio-sync.zip on both the Studio site and the live site (Plugins → Add New → Upload Plugin → Activate).pbj-installer helper plugin or remove the old pbj-studio-sync folder first.On the live site, open Studio Sync → Dashboard and click Check / fix REST API. It rebuilds rewrite rules, sets permalinks to /%postname%/ if they were on "Plain" (which blocks REST routes), and self-tests /wp-json/. Wait for the green confirmation. If it still fails, the cause is outside the plugin — usually a security plugin blocking REST, or a server-config issue.
On the live site: Users → Profile → Application Passwords. Add one named "Studio Sync" and copy the 24-character password (keep the spaces).
On the Studio site: Studio Sync → Settings. Enter the live site URL, the live admin username, and the Application Password. Under "What to sync", confirm the content types you want pushed — posts, media, and Navigation menus are on by default; theme, plugin, Users and Settings (wp_options + theme mods) sync are optional. Save.
Users / Settings sync (2.0). These two clone the live site beyond content — settings includes
theme_mods(footers/headers/customizer) and plugin configuration; users includes roles, profile meta, and password hashes. The plugin always protects the live site's site/home URL, active-plugins list, theme selection, and the operator's own login from being overwritten. Even so, test these directions against a staging copy before running them onto real production.
Studio Sync → Dashboard → Test connection. You should see a green panel showing the live site's URL, WP version, PHP version, and database engine.
Studio Sync → Dashboard → Push to live now. The progress UI shows each stage in order: terms → uploads → posts → menus → theme → plugins → plugin states → settings → users → prune → deletions → commit.
When you trash a post or delete a media file on Studio, the plugin records a "tombstone". The next push removes the same item from live by slug (including the underlying file for attachments). Untrashing a post before the next push cancels its tombstone.
.zip (MySQL dump + per-table JSON snapshot + uploads folder), downloadable via a one-time link..zip into Studio. The importer reads the JSON snapshot, so it works across the SQLite/MySQL boundary. Use "wipe first" to clear content tables before restoring.Studio Sync → Compare & Sync (Studio only). Click Load comparison to see a per-section count of Studio vs. Live — posts, media, terms, theme, plugins, settings, users, menus — with a "≠" marker on anything that differs.
Theme and plugin files aren't included in backups, so they're disabled in the Download direction — use Upload for those. Both sites must be on 2.0.0 for the comparison to load (the /summary endpoint is new in 2.0).
Studio Sync → Settings → Auto-updates. Point at a GitHub repo (user/repo) or a JSON manifest URL. New versions then appear under Plugins → Installed Plugins with the normal "Update Now" button.
/wp-json/ — run "Check / fix REST API" on live; check for a security plugin blocking REST.staged_file_missing during a push — a stage-order problem; uploads must run before posts (fixed in 1.5.1+).delete_attachment tombstone hook.HTTP 401 Authentication required on the final commit (push transferred but didn't finalize) — fixed in 2.5.1. A full push could write a setting mid-run that disabled Application Passwords on live, so the last call was rejected while your browser login stayed fine. 2.5.1 force-keeps Application Passwords available for the sync's own endpoints, so this can't recur. If you saw it on an older build: update both sites to 2.5.1, regenerate the Application Password on live, re-enter it in Studio, and re-run.~/Documents/Claude/Projects/Wordpress Plugins/, mirrored to the WordPress Plugins/pbj-studio-sync/ folder in Google Drive.wp-content/uploads/pbj-sync/ (removed automatically on uninstall).