[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f0yEWseMSYB78ROL1UZq3XrM4gaBWTPbJdL8mcm3VccQ":3,"$fLkEh09aBiqPhm-2FjAKWWcZg3pvwwmJ7PglnJg0rkuQ":122,"$ftjjE3JfYMeLHMzNVp4m-XRzUP3I2bnZbsauh1Gbj_uA":127},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":35,"analysis":26,"fingerprints":26},"content-version-for-git","Content Version for Git","0.1.8","maksonlee","https:\u002F\u002Fprofiles.wordpress.org\u002Fmaksonlee\u002F","\u003Cp>Content Version for Git stores editable WordPress content snapshots in a configured GitHub repository. It versions posts, pages, terms, and optionally media metadata and original media files. Editors can preview, diff, and restore previous versions from the WordPress admin.\u003C\u002Fp>\n\u003Cp>The plugin writes and reads Git objects through the GitHub API. It does not keep a local Git repository and does not call the git CLI.\u003C\u002Fp>\n\u003Cp>Features include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Automatic Git versions for normal post and page saves.\u003C\u002Fli>\n\u003Cli>Batched Git versions for direct category and tag relationship changes.\u003C\u002Fli>\n\u003Cli>Side-by-side content diffs and field diffs.\u003C\u002Fli>\n\u003Cli>Full restore and content-only restore modes.\u003C\u002Fli>\n\u003Cli>Deleted Resources view for posts, pages, and tracked media.\u003C\u002Fli>\n\u003Cli>Restore deleted posts\u002Fpages as new drafts and deleted media as new attachments.\u003C\u002Fli>\n\u003Cli>Optional media metadata and file tracking.\u003C\u002Fli>\n\u003Cli>Manual import of existing posts, pages, and media.\u003C\u002Fli>\n\u003Cli>Version store dashboard with branch, latest commit, tracked file count, and GitHub version store status.\u003C\u002Fli>\n\u003Cli>Direct GitHub API commits without a local Git worktree.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to GitHub when the “Enable GitHub version store” setting is enabled and a repository URL, branch, and personal access token are configured.\u003C\u002Fp>\n\u003Cp>When enabled, the plugin writes Git commits directly to the configured GitHub repository using the GitHub API. Commit data may include post\u002Fpage content, metadata, term references, media metadata, and media files if media tracking is enabled.\u003C\u002Fp>\n\u003Cp>Create the GitHub repository before configuring the plugin. The repository may be empty, and the plugin can initialize an empty repository on the first write, but it does not create GitHub repositories. Use a dedicated repository or a dedicated branch for this plugin’s version store. Normal version writes preserve unrelated files on the branch, but Reset GitHub Version Store rewrites the configured branch history.\u003C\u002Fp>\n\u003Cp>For fine-grained personal access tokens, select only the version-store repository and grant Contents read and write access. Organization repositories may require organization approval for the token before the plugin can use it.\u003C\u002Fp>\n\u003Cp>The GitHub version store is disabled by default. No data is sent to GitHub unless a site administrator enables and configures it. Without the GitHub version store, this plugin does not keep durable local Git versions. GitHub’s terms and privacy policy apply:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fgithub-terms\u002Fgithub-terms-of-service\u003C\u002Fli>\n\u003Cli>https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fprivacy-policies\u002Fgithub-privacy-statement\u003C\u002Fli>\n\u003C\u002Ful>\n","GitHub-backed version history for WordPress posts, pages, and media.",0,214,"2026-07-11T19:55:00.000Z","7.0.2","6.0","7.4",[18,19,20,21,22],"content","git","github","revisions","version-control","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.8.zip",100,null,"2026-07-22T17:31:50.256Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":32,"trust_score":33,"computed_at":34},1,30,94,"2026-08-29T02:49:31.657Z",[36,54,70,88,106],{"slug":37,"name":38,"version":39,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":11,"num_ratings":11,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":23,"tags":49,"homepage":51,"download_link":52,"security_score":53,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"wp-github-sync-meta","WP GitHub Sync Meta","1.2","lite3","https:\u002F\u002Fprofiles.wordpress.org\u002Flite3\u002F","\u003Cp>\u003Cem>A WordPress plugin to sync meta, tags and categories with a GitHub via wp-github-sync\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>This plugin Requires \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-github-sync\u002F\" rel=\"ugc\">WordPress guithub Sync\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Related Links:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.litefeel.com\u002F\" title=\"Author For WP GitHub Sync Meta\" rel=\"nofollow ugc\">Author Homepage\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flite3\u002Fwp-github-sync-meta\" title=\"On GitHub\" rel=\"nofollow ugc\">On GitHub\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","A WordPress plugin to sync meta, tags and categories with a GitHub via wp-github-sync",10,1510,"2017-03-30T05:08:00.000Z","4.7.33","4.2",[50,18,19,20,22],"collaboration","https:\u002F\u002Fgithub.com\u002Flite3\u002Fwp-github-sync-meta","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-github-sync-meta.1.2.zip",85,{"slug":55,"name":56,"version":57,"author":58,"author_profile":59,"description":60,"short_description":61,"active_installs":44,"downloaded":62,"rating":33,"num_ratings":63,"last_updated":64,"tested_up_to":65,"requires_at_least":66,"requires_php":23,"tags":67,"homepage":68,"download_link":69,"security_score":53,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"writing-on-github","Writing On GitHub","1.11","litefeel","https:\u002F\u002Fprofiles.wordpress.org\u002Flitefeel\u002F","\u003Cp>\u003Cem>A WordPress plugin to allow you writing on GitHub (or Jekyll site).\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Some code for this plugin comes from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FmAAdhaTTah\u002Fwordpress-github-sync\" rel=\"nofollow ugc\">WordPress GitHub Sync\u003C\u002Fa>, thanks.\u003C\u002Fp>\n\u003Cp>Ever wish you could collaboratively author content for your WordPress site (or expose change history publicly and accept pull requests from your readers)?\u003C\u002Fp>\n\u003Cp>Well, now you can! Introducing \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flitefeel\u002Fwriting-on-github\" rel=\"nofollow ugc\">Writing On GitHub\u003C\u002Fa>!\u003C\u002Fp>\n\u003Ch4>Writing On GitHub does three things:\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Allows content publishers to version their content in GitHub\u003C\u002Fli>\n\u003Cli>Allows readers to submit proposed improvements to WordPress-served content via GitHub’s Pull Request model\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Writing On GitHub might be able to do some other cool things:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Allow teams to collaboratively write and edit posts using GitHub (e.g., pull requests, issues, comments)\u003C\u002Fli>\n\u003Cli>Allow you to sync the content of two different WordPress installations via GitHub\u003C\u002Fli>\n\u003Cli>Allow you to stage and preview content before “deploying” to your production server\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How it works\u003C\u002Fh4>\n\u003Cp>The sync action is based on two hooks:\u003C\u002Fp>\n\u003Col>\n\u003Cli>A per-post sync fired in response to WordPress’s \u003Ccode>save_post\u003C\u002Fcode> hook which pushes content to GitHub\u003C\u002Fli>\n\u003Cli>A sync of all changed files triggered by GitHub’s \u003Ccode>push\u003C\u002Fcode> webhook (outbound API call)\u003C\u002Fli>\n\u003C\u002Fol>\n","A WordPress plugin to allow you writing on GitHub (or Jekyll site).",3024,3,"2020-04-06T10:55:00.000Z","5.4.19","3.9",[50,18,19,20,22],"https:\u002F\u002Fgithub.com\u002Flitefeel\u002Fwriting-on-github","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwriting-on-github.zip",{"slug":71,"name":72,"version":73,"author":74,"author_profile":75,"description":76,"short_description":77,"active_installs":11,"downloaded":78,"rating":11,"num_ratings":11,"last_updated":79,"tested_up_to":80,"requires_at_least":81,"requires_php":16,"tags":82,"homepage":23,"download_link":86,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":87},"praison-file-content-git","PraisonAI Git Posts","1.0.6","Mervin Praison","https:\u002F\u002Fprofiles.wordpress.org\u002Fmervinpraison\u002F","\u003Cp>\u003Cstrong>PraisonAI Git Posts\u003C\u002Fstrong> is a revolutionary WordPress plugin that enables file-based content management with Git version control integration. Store your posts, pages, and custom post types as Markdown files while maintaining full WordPress compatibility.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>File-Based Content Management\u003C\u002Fstrong> – Store all content as Markdown files\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No Database Writes\u003C\u002Fstrong> – Pure read-only approach for content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Git Version Control\u003C\u002Fstrong> – Track changes with full Git integration\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dynamic Post Type Discovery\u003C\u002Fstrong> – Automatically registers post types from directory structure\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom URL Routing\u003C\u002Fstrong> – Beautiful URLs for any post type (e.g., \u003Ccode>\u002Frecipes\u002Fsong-name\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>YAML Front Matter\u003C\u002Fstrong> – Rich metadata support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Caching System\u003C\u002Fstrong> – Built-in performance optimization\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Auto-Update Detection\u003C\u002Fstrong> – Content updates automatically when files change\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WordPress Compatible\u003C\u002Fstrong> – Works with themes, plugins, and filters\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer Friendly\u003C\u002Fstrong> – Clean, extensible architecture\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Perfect For\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Developers who prefer Git workflows\u003C\u002Fli>\n\u003Cli>Teams collaborating on content\u003C\u002Fli>\n\u003Cli>Sites requiring version control\u003C\u002Fli>\n\u003Cli>Static site generators transitioning to WordPress\u003C\u002Fli>\n\u003Cli>Content stored in version control repositories\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Create a \u003Ccode>content\u002F\u003C\u002Fcode> directory at your WordPress root\u003C\u002Fli>\n\u003Cli>Add Markdown files with YAML front matter\u003C\u002Fli>\n\u003Cli>Plugin automatically discovers and loads content\u003C\u002Fli>\n\u003Cli>Create new post types by simply adding directories\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Example Post\u003C\u002Fh4>\n\u003Cp>    `markdown\u003C\u002Fp>\n\u003Cp>title: “My Post Title”\u003Cbr \u002F>\nslug: “my-post-slug”\u003Cbr \u002F>\nauthor: “admin”\u003Cbr \u002F>\ndate: “2024-10-31 12:00:00”\u003Cbr \u002F>\nstatus: “publish”\u003Cbr \u002F>\ncategories:\u003Cbr \u002F>\n  – “General”\u003Cbr \u002F>\ntags:\u003C\u002Fp>\n\u003Cp>  – “example”\u003C\u002Fp>\n\u003Cp>Your content here\u003C\u002Fp>\n\u003Cp>Write your content in \u003Cstrong>Markdown\u003C\u002Fstrong> format.\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 7.4 or higher\u003C\u002Fli>\n\u003Cli>Git (optional, for version control features)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to external services for certain features:\u003C\u002Fp>\n\u003Ch4>GitHub API\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>What it is:\u003C\u002Fstrong> GitHub’s REST API (https:\u002F\u002Fapi.github.com) is used for version control and collaboration features.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>When it’s used:\u003C\u002Fstrong> The plugin connects to GitHub API when you:\u003Cbr \u002F>\n– Enable GitHub OAuth authentication\u003Cbr \u002F>\n– Create or manage pull requests\u003Cbr \u002F>\n– Sync content with a GitHub repository\u003Cbr \u002F>\n– View pull request details and changes\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What data is sent:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Repository information (owner, name)\u003Cbr \u002F>\n– Authentication tokens (OAuth)\u003Cbr \u002F>\n– Commit messages and file changes\u003Cbr \u002F>\n– Pull request data\u003C\u002Fp>\n\u003Cp>\u003Cstrong>User consent:\u003C\u002Fstrong> GitHub features are optional and only activated when you configure GitHub integration in the plugin settings. No data is sent to GitHub unless you explicitly enable and configure GitHub features.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Service information:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Service provider: GitHub, Inc.\u003Cbr \u002F>\n– Terms of service: https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fgithub-terms\u002Fgithub-terms-of-service\u003Cbr \u002F>\n– Privacy policy: https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fprivacy-policies\u002Fgithub-privacy-statement\u003C\u002Fp>\n\u003Ch3>Development\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>GitHub Repository: https:\u002F\u002Fgithub.com\u002FMervinPraison\u002FPraisonAI-Git-Posts\u003C\u002Fli>\n\u003Cli>Report Issues: https:\u002F\u002Fgithub.com\u002FMervinPraison\u002FPraisonAI-Git-Posts\u002Fissues\u003C\u002Fli>\n\u003Cli>Author Website: https:\u002F\u002Fmer.vin\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Developed by MervinPraison\u003C\u002Fp>\n","Load WordPress content from files (Markdown, JSON, YAML) without database writes, with Git-based version control.",102,"2025-12-24T08:28:00.000Z","6.9.4","5.0",[83,84,19,85,22],"content-management","file-based","markdown","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpraison-file-content-git.1.0.6.zip","2026-03-15T15:16:48.613Z",{"slug":89,"name":90,"version":91,"author":92,"author_profile":93,"description":94,"short_description":95,"active_installs":11,"downloaded":96,"rating":11,"num_ratings":11,"last_updated":97,"tested_up_to":80,"requires_at_least":15,"requires_php":98,"tags":99,"homepage":103,"download_link":104,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":105},"pushpull","PushPull","0.0.20","Jerome Steunenberg","https:\u002F\u002Fprofiles.wordpress.org\u002Fjeromesteunenberg\u002F","\u003Cp>PushPull stores selected WordPress content in a Git repository using a canonical JSON representation instead of raw database dumps.\u003C\u002Fp>\n\u003Cp>This project is also documented through a DevOps-focused article series that explains how to efficiently manage a WordPress stack with Bedrock and PushPull, starting here: https:\u002F\u002Fcreativemoods.pt\u002Fdevops-with-wordpress\u002F\u003C\u002Fp>\n\u003Ch3>Beta notice\u003C\u002Fh3>\n\u003Cp>This is a beta plugin. It is still under active development, has limited functionality, and currently supports only a narrow subset of the intended PushPull feature set.\u003C\u002Fp>\n\u003Cp>The current release supports these managed domains:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Primary domains:\u003Cbr \u002F>\n   generateblocks_global_styles\u003Cbr \u002F>\n   generateblocks_conditions\u003Cbr \u002F>\n   wordpress_block_patterns\u003Cbr \u002F>\n   wordpress_categories\u003Cbr \u002F>\n   wordpress_comments\u003Cbr \u002F>\n   wordpress_menus\u003Cbr \u002F>\n   wordpress_pages\u003Cbr \u002F>\n   wordpress_posts\u003Cbr \u002F>\n   wordpress_tags\u003Cbr \u002F>\n   wordpress_custom_css\u003Cbr \u002F>\n   generatepress_elements\u003Cbr \u002F>\n   wordpress_attachments (explicit opt-in only)\u003Cbr \u002F>\ngeneric discovered custom post types and taxonomies\u003C\u002Fli>\n\u003Cli>Config domains:\u003Cbr \u002F>\n   wordpress_core_configuration\u003Cbr \u002F>\n   wpml_configuration\u003C\u002Fli>\n\u003Cli>Overlay domains:\u003Cbr \u002F>\n   translation_management (WPML-backed)\u003Cbr \u002F>\n   media_organization (Real Media Library-backed)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>PushPull keeps a local Git-like repository inside WordPress database tables and supports the following workflow directly from WordPress admin:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Test the remote GitHub or GitLab connection\u003C\u002Fli>\n\u003Cli>Commit live managed content into the local repository\u003C\u002Fli>\n\u003Cli>Initialize an empty remote repository\u003C\u002Fli>\n\u003Cli>Fetch remote commits into a local tracking ref\u003C\u002Fli>\n\u003Cli>Diff live, local, and remote states\u003C\u002Fli>\n\u003Cli>Pull remote changes through fetch + merge\u003C\u002Fli>\n\u003Cli>Merge remote changes into the local branch\u003C\u002Fli>\n\u003Cli>Resolve conflicts when needed\u003C\u002Fli>\n\u003Cli>Apply repository content back into WordPress\u003C\u002Fli>\n\u003Cli>Push local commits to GitHub or GitLab\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The plugin also includes:\u003C\u002Fp>\n\u003Col>\n\u003Cli>An audit log screen\u003C\u002Fli>\n\u003Cli>Local repository reset tooling\u003C\u002Fli>\n\u003Cli>Remote branch reset tooling that creates one commit removing all tracked files from the branch\u003C\u002Fli>\n\u003Cli>A dedicated Domains screen that separates WordPress core, installed plugin integrations, and discovered custom content\u003C\u002Fli>\n\u003Cli>Global and per-domain managed-content views in the admin UI\u003C\u002Fli>\n\u003Cli>A high-level PushPull status dropdown in the WordPress admin bar\u003C\u002Fli>\n\u003Cli>Menu structure export and apply with hierarchy and theme location assignment\u003C\u002Fli>\n\u003Cli>A scheduled lightweight remote-head check that highlights when \u003Ccode>Fetch\u003C\u002Fcode> likely has updates available\u003C\u002Fli>\n\u003Cli>Bulk \u003Ccode>Commit + Push All\u003C\u002Fcode> and \u003Ccode>Pull + Apply All\u003C\u002Fcode> workflows for whole-site bootstrap and deploy flows\u003C\u002Fli>\n\u003Cli>A \u003Ccode>wp pushpull\u003C\u002Fcode> WP-CLI command surface for status, configuration, domains, and sync operations\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Current scope\u003C\u002Fh3>\n\u003Cp>This is an early, focused release. At the moment, PushPull is intentionally limited to:\u003C\u002Fp>\n\u003Col>\n\u003Cli>GitHub and GitLab as implemented remote providers\u003C\u002Fli>\n\u003Cli>Managed domains across three families:\u003Cbr \u002F>\n   generateblocks\u002Fglobal-styles\u002F\u003Cbr \u002F>\n   generateblocks\u002Fconditions\u002F\u003Cbr \u002F>\n   wordpress\u002Fblock-patterns\u002F\u003Cbr \u002F>\n   wordpress\u002Fcategories\u002F\u003Cbr \u002F>\n   wordpress\u002Fcomments\u002F\u003Cbr \u002F>\n   wordpress\u002Fmenus\u002F\u003Cbr \u002F>\n   wordpress\u002Fpages\u002F\u003Cbr \u002F>\n   wordpress\u002Fposts\u002F\u003Cbr \u002F>\n   wordpress\u002Ftags\u002F\u003Cbr \u002F>\n   wordpress\u002Fcustom-css\u002F\u003Cbr \u002F>\n   wordpress\u002Fattachments\u002F\u003Cbr \u002F>\n   wordpress\u002Fconfiguration\u002F\u003Cbr \u002F>\n   wpml\u002Fconfiguration\u002F\u003Cbr \u002F>\n   wordpress\u002Fgeneratepress-elements\u002F\u003Cbr \u002F>\n   wordpress\u002Fcustom-post-types\u002F\u002F\u003Cbr \u002F>\n   wordpress\u002Fcustom-taxonomies\u002F\u002F\u003Cbr \u002F>\n   translations\u002Fmanagement\u002F\u003Cbr \u002F>\n   media\u002Forganization\u002F\u003C\u002Fli>\n\u003Cli>Canonical JSON storage with one file per managed item for manifest-backed sets, plus directory-backed storage for attachments using \u003Ccode>attachment.json\u003C\u002Fcode> and the binary file\u003C\u002Fli>\n\u003Cli>Explicit opt-in attachment sync through a media-library checkbox\u003C\u002Fli>\n\u003Cli>Overlay domains that scope themselves to enabled compatible base domains rather than exporting every backend row blindly\u003C\u002Fli>\n\u003Cli>A cached remote-head availability signal for \u003Ccode>Fetch\u003C\u002Fcode>, driven by a configurable recurring check instead of a live provider probe on every page load\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>It does not yet manage forms, users, arbitrary \u003Ccode>wp_options\u003C\u002Fcode>, or arbitrary plugin data.\u003C\u002Fp>\n\u003Ch3>How PushPull represents content\u003C\u002Fh3>\n\u003Cp>PushPull does not use WordPress post IDs as repository identity.\u003C\u002Fp>\n\u003Cp>For the currently supported managed sets it stores:\u003C\u002Fp>\n\u003Col>\n\u003Cli>One canonical JSON file per managed item\u003C\u002Fli>\n\u003Cli>One separate \u003Ccode>manifest.json\u003C\u002Fcode> file for manifest-backed sets that preserves logical ordering\u003C\u002Fli>\n\u003Cli>One directory per attachment for the attachments set, containing \u003Ccode>attachment.json\u003C\u002Fcode> and the binary file\u003C\u002Fli>\n\u003Cli>Stable logical keys instead of environment-specific database IDs\u003C\u002Fli>\n\u003Cli>Canonical logical-key references for cross-domain relationships such as reading settings, translation groups, media folders, GeneratePress condition targets, and menu object references\u003C\u002Fli>\n\u003Cli>Recursive placeholder normalization for current-site absolute URLs in post-type-backed content\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Cp>PushPull currently supports GitHub and GitLab repositories.\u003C\u002Fp>\n\u003Cp>For GitHub, grant:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Repository metadata read access\u003C\u002Fli>\n\u003Cli>Repository contents read and write access\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>For GitLab fine-grained personal access tokens, grant:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>Project: Read\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Branch: Read\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Commit: Read\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Commit: Create\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Repository: Read\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>In PushPull > Settings:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Select \u003Ccode>GitHub\u003C\u002Fcode> or \u003Ccode>GitLab\u003C\u002Fcode> as the provider\u003C\u002Fli>\n\u003Cli>Enter the repository owner and repository name\u003C\u002Fli>\n\u003Cli>Enter the target branch\u003C\u002Fli>\n\u003Cli>Enter the API token\u003C\u002Fli>\n\u003Cli>Optionally set the remote fetch check interval in minutes\u003C\u002Fli>\n\u003Cli>Click \u003Ccode>Test connection\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Save the settings\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Domain selection\u003C\u002Fh4>\n\u003Cp>In PushPull > Domains:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Enable one or more managed domains\u003C\u002Fli>\n\u003Cli>Review WordPress core, installed plugin integrations, and discovered custom content separately\u003C\u002Fli>\n\u003Cli>Opt into generic discovered custom post types and taxonomies when you want them managed\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Workflow\u003C\u002Fh4>\n\u003Cp>The normal workflow is:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>Commit\u003C\u002Fcode> to snapshot the current live managed-set content into the local repository\u003C\u002Fli>\n\u003Cli>\u003Ccode>Fetch\u003C\u002Fcode> to import the current remote branch into \u003Ccode>refs\u002Fremotes\u002Forigin\u002F\u003Cbranch>\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Inspect the live\u002Flocal and local\u002Fremote diff views if needed\u003C\u002Fli>\n\u003Cli>\u003Ccode>Pull\u003C\u002Fcode> for the common fetch + merge flow, or \u003Ccode>Merge\u003C\u002Fcode> manually after fetch when you want review first\u003C\u002Fli>\n\u003Cli>\u003Ccode>Apply repo to WordPress\u003C\u002Fcode> when you want the local branch state written back into WordPress\u003C\u002Fli>\n\u003Cli>\u003Ccode>Push\u003C\u002Fcode> when you want local commits published to GitHub or GitLab\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>PushPull also performs a lightweight recurring remote-head check and visually highlights \u003Ccode>Fetch\u003C\u002Fcode> when the latest scheduled check suggests the remote branch has advanced since the last fetch.\u003C\u002Fp>\n\u003Cp>For whole-site bootstrap flows, PushPull also supports:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>Commit + Push All\u003C\u002Fcode> to snapshot and publish all enabled domains\u003C\u002Fli>\n\u003Cli>\u003Ccode>Pull + Apply All\u003C\u002Fcode> to import and apply all enabled domains on a bare target site\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>If both local and remote changed, PushPull can persist conflicts, let you resolve them in the admin UI, and then finalize a merge commit.\u003C\u002Fp>\n\u003Cp>When pushing to GitLab, PushPull currently linearizes local merge results into a normal commit on the remote branch instead of preserving merge topology. The merged tree content is preserved; only the remote Git history shape is flattened.\u003C\u002Fp>\n\u003Ch4>WP-CLI\u003C\u002Fh4>\n\u003Cp>PushPull also exposes a \u003Ccode>wp pushpull\u003C\u002Fcode> command.\u003C\u002Fp>\n\u003Cp>Examples:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>wp pushpull status\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull domains\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull config list\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull config set branch main\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull config enable-domain wordpress_pages\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull commit wordpress_pages\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull push\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull commit-push-all\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp pushpull pull-apply-all\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Empty repositories\u003C\u002Fh4>\n\u003Cp>If the configured GitHub or GitLab repository exists but has no commits yet, \u003Ccode>Test connection\u003C\u002Fcode> will report that the repository is reachable but empty.\u003C\u002Fp>\n\u003Cp>In that case, click \u003Ccode>Initialize remote repository\u003C\u002Fcode>. PushPull will:\u003C\u002Fp>\n\u003Col>\n\u003Cli>create the first commit on the configured branch\u003C\u002Fli>\n\u003Cli>fetch that initial commit into the local remote-tracking ref\u003C\u002Fli>\n\u003Cli>make the repository ready for normal commit, fetch, merge, apply, and push workflows\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>You do not need to create the first commit manually on the provider before using PushPull.\u003C\u002Fp>\n\u003Ch3>TODO\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Cache the admin-bar PushPull status summary so the high-level live\u002Flocal and local\u002Fremote aggregation is not recomputed on every page view.\u003C\u002Fli>\n\u003Cli>Move chunked async provider resumability fully into the provider layer so \u003Ccode>AsyncBranchOperationRunner\u003C\u002Fcode> no longer needs provider-specific GitLab staging rehydration logic.\u003C\u002Fli>\n\u003Cli>Improve push progress and recap reporting to distinguish newly uploaded objects from objects reused from the remote history.\u003C\u002Fli>\n\u003Cli>Surface unresolved logical-reference mapping issues, such as GeneratePress condition IDs that could not be converted to logical placeholders, instead of silently leaving mixed raw IDs and canonical refs.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>PushPull connects to the GitHub or GitLab API for the repository you configure in the plugin settings.\u003C\u002Fp>\n\u003Cp>The plugin uses the provider REST API to:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Read repository metadata and the default branch\u003C\u002Fli>\n\u003Cli>Read and update branch refs\u003C\u002Fli>\n\u003Cli>Read and create Git objects or provider-equivalent commit actions\u003C\u002Fli>\n\u003Cli>Test repository access before sync operations\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>PushPull sends the following information to the configured provider over HTTPS:\u003C\u002Fp>\n\u003Col>\n\u003Cli>The repository owner, repository name, branch, and API base URL\u003C\u002Fli>\n\u003Cli>Your configured API token in the provider-specific authentication header\u003C\u002Fli>\n\u003Cli>Canonical JSON representations of the managed content you choose to commit and push\u003C\u002Fli>\n\u003Cli>Commit metadata such as commit messages and, if configured, author name and email\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>In the current release, the managed content sent to the provider is limited to the enabled supported domains: GenerateBlocks Global Styles, GenerateBlocks Conditions, WordPress Block Patterns, WordPress Categories, WordPress Comments, WordPress Menus, WordPress Pages, WordPress Posts, WordPress Tags, WordPress Custom CSS, GeneratePress Elements, explicitly opted-in WordPress Attachments, WordPress core configuration, WPML configuration, generic discovered custom post types and taxonomies, WPML-backed translation management, and Real Media Library-backed media organization.\u003C\u002Fp>\n\u003Cp>PushPull does not send your whole WordPress database to the provider. It only sends the managed content represented by the enabled adapters.\u003C\u002Fp>\n\u003Cp>GitHub terms of service: https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fgithub-terms\u002Fgithub-terms-of-service\u003Cbr \u002F>\nGitHub privacy statement: https:\u002F\u002Fdocs.github.com\u002Fen\u002Fsite-policy\u002Fprivacy-policies\u002Fgithub-general-privacy-statement\u003Cbr \u002F>\nGitLab terms: https:\u002F\u002Fabout.gitlab.com\u002Fterms\u002F\u003Cbr \u002F>\nGitLab privacy statement: https:\u002F\u002Fabout.gitlab.com\u002Fprivacy\u002F\u003C\u002Fp>\n","Git-based content sync for WordPress. Project homepage: https:\u002F\u002Fcreativemoods.pt\u002Fpushpull\u002F",532,"2026-04-14T10:49:00.000Z","8.1",[100,101,102,19,20],"content-sync","devops","generateblocks","https:\u002F\u002Fgithub.com\u002Fcreativemoods\u002Fpushpull","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpushpull.0.0.20.zip","2026-04-16T10:56:18.058Z",{"slug":107,"name":108,"version":109,"author":110,"author_profile":111,"description":112,"short_description":113,"active_installs":11,"downloaded":114,"rating":11,"num_ratings":11,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":118,"tags":119,"homepage":23,"download_link":120,"security_score":121,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"version-control-your-content","Version Control Your Content","1.0.0","Haris Amjed","https:\u002F\u002Fprofiles.wordpress.org\u002Fharisamjed\u002F","\u003Cp>The Version Control Your Content plugin provides an alternative to the native WP \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fdocumentation\u002Farticle\u002Frevisions\u002F\" rel=\"ugc\">Revisions\u003C\u002Fa> feature using Git services.\u003C\u002Fp>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>A GitHub account. If you don’t have one, you can create one \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoin\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>A GitHub private repository. If you don’t have one, you can create one \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnew\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>(Optional but highly recommended) A GitHub fine-grained personal access token. If you don’t have one, you can create one \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens\u002Fnew\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin provides an option for version control in the following places for now:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Block Editor (Gutenberg)\u003C\u002Fli>\n\u003Cli>Classic Editor\u003C\u002Fli>\n\u003Cli>Additional CSS in the Customizer\u003C\u002Fli>\n\u003Cli>Default Settings pages in WP Admin\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>On all supported pages, you will see a “Version Control” box, and you can activate or deactivate it for that page. It will also show you the real-time GitHub API usage in the top admin bar.\u003C\u002Fp>\n\u003Cp>This solution will put minimal load on your server because there will be no database entries, no complex SQL operations, and only simple JavaScript-based API calls to external Git services.\u003C\u002Fp>\n\u003Ch4>How it works behind the scenes?\u003C\u002Fh4>\n\u003Col>\n\u003Cli>When you submit any HTML form, such as saving a post, it captures the form data via JavaScript before sending it to the server backend.\u003C\u002Fli>\n\u003Cli>It sanitizes the data and converts it to JSON format (if needed).\u003C\u002Fli>\n\u003Cli>It sends that JSON or HTML data to your Git repository via a commit.\u003C\u002Fli>\n\u003Cli>In this way, all your changes will be new commits in your Git repo in related JSON or HTML files.\u003C\u002Fli>\n\u003Cli>In the commits box, a list of all commits will be shown. It will also provide an option to view the changes or revert to that version.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Planned Upcoming Features\u003C\u002Fh4>\n\u003Cp>Currently, I have developed it for three views as described above, and the following features will be added in the future:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Integration with page builders like Elementor, Divi, Beaver Builder, WPBakery, etc.\u003C\u002Fli>\n\u003Cli>Integration with WooCommerce\u003C\u002Fli>\n\u003Cli>Integration with BuddyPress\u003C\u002Fli>\n\u003Cli>Integration with bbPress\u003C\u002Fli>\n\u003Cli>Integration with WPML, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n","Provides an alternative to the native WP Revisions feature using Git services. Also works for Additional CSS and wp-admin Settings pages.",556,"2025-04-06T03:53:00.000Z","6.7.5","5.6","7.2",[19,20,22],"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fversion-control-your-content.1.0.0.zip",92,{"error":123,"url":124,"statusCode":125,"statusMessage":126,"message":126},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fcontent-version-for-git\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":128,"versions":129},6,[130,136,143,150,157,164],{"version":6,"download_url":24,"svn_tag_url":131,"released_at":26,"has_diff":132,"diff_files_changed":133,"diff_lines":26,"trac_diff_url":134,"vulnerabilities":135,"is_current":123},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.8\u002F",false,[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fcontent-version-for-git%2Ftags%2F0.1.7&new_path=%2Fcontent-version-for-git%2Ftags%2F0.1.8",[],{"version":137,"download_url":138,"svn_tag_url":139,"released_at":26,"has_diff":132,"diff_files_changed":140,"diff_lines":26,"trac_diff_url":141,"vulnerabilities":142,"is_current":132},"0.1.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fcontent-version-for-git%2Ftags%2F0.1.6&new_path=%2Fcontent-version-for-git%2Ftags%2F0.1.7",[],{"version":144,"download_url":145,"svn_tag_url":146,"released_at":26,"has_diff":132,"diff_files_changed":147,"diff_lines":26,"trac_diff_url":148,"vulnerabilities":149,"is_current":132},"0.1.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fcontent-version-for-git%2Ftags%2F0.1.5&new_path=%2Fcontent-version-for-git%2Ftags%2F0.1.6",[],{"version":151,"download_url":152,"svn_tag_url":153,"released_at":26,"has_diff":132,"diff_files_changed":154,"diff_lines":26,"trac_diff_url":155,"vulnerabilities":156,"is_current":132},"0.1.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fcontent-version-for-git%2Ftags%2F0.1.4&new_path=%2Fcontent-version-for-git%2Ftags%2F0.1.5",[],{"version":158,"download_url":159,"svn_tag_url":160,"released_at":26,"has_diff":132,"diff_files_changed":161,"diff_lines":26,"trac_diff_url":162,"vulnerabilities":163,"is_current":132},"0.1.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fcontent-version-for-git%2Ftags%2F0.1.3&new_path=%2Fcontent-version-for-git%2Ftags%2F0.1.4",[],{"version":165,"download_url":166,"svn_tag_url":167,"released_at":26,"has_diff":132,"diff_files_changed":168,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":169,"is_current":132},"0.1.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-version-for-git.0.1.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcontent-version-for-git\u002Ftags\u002F0.1.3\u002F",[],[]]