Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions contentrain-bridge.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: Contentrain Bridge
* Plugin URI: https://github.com/Contentrain/wordpress-bridge
* Description: Model and export WordPress content and interface text as Contentrain JSON/Markdown, with optional GitHub delivery.
* Version: 0.5.0
* Version: 0.6.0
* Requires at least: 6.2
* Requires PHP: 7.4
* Author: Contentrain
Expand All @@ -16,7 +16,7 @@
*/

defined( 'ABSPATH' ) || exit;
define( 'CONTENTRAIN_BRIDGE_VERSION', '0.5.0' );
define( 'CONTENTRAIN_BRIDGE_VERSION', '0.6.0' );
define( 'CONTENTRAIN_BRIDGE_FILE', __FILE__ );

foreach ( array( 'policy', 'files', 'exporter', 'menus', 'source', 'inventory', 'delta', 'seo-render', 'seo', 'redirects', 'routing', 'scanner', 'text', 'coverage', 'integrations', 'acf', 'models', 'validator', 'rawir', 'jobs', 'github', 'key', 'remote', 'admin' ) as $contentrain_bridge_class ) {
Expand Down
11 changes: 8 additions & 3 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tags: export, migration, headless, astro, content
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.5.0
Stable tag: 0.6.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Expand All @@ -31,7 +31,7 @@ The plugin contacts no host other than this site unless you choose GitHub delive

**GitHub** — used only when you enter a repository and a token in step 3 and start the delivery. The plugin then calls the GitHub REST API at api.github.com to read the target repository's default branch (or the base branch you name) and file list, upload the exported files, and create one new branch holding them. What is sent: the exported content files you reviewed, a commit message, and the token you supplied. Nothing is sent to Contentrain or to any other host, and no analytics or telemetry is collected. The token is used for those requests only and is never stored in the database or in the export. Delivery never writes to your default branch and never overwrites a file you edited in Git. GitHub's terms: https://docs.github.com/site-policy/github-terms/github-terms-of-service — privacy policy: https://docs.github.com/site-policy/privacy-policies/github-privacy-statement

**REST export API (inbound)** — the plugin adds routes under `/wp-json/contentrain-bridge/v1/` that let a program you authorize start an export and read its files. The plugin sends nothing by itself: the program asks, with an application password of an administrator who has the export and manage_options capabilities. Contentrain Migrate uses these routes when you give it such a password to migrate this site; what Migrate then does with the content is governed by Contentrain's terms (https://contentrain.io/terms-of-service) and privacy policy (https://contentrain.io/privacy-policy). Revoke the application password in your profile to end that access; exports expire after a day.
**REST export API (inbound)** — the plugin adds routes under `/wp-json/contentrain-bridge/v1/` that let a program you authorize start an export and read its files. The plugin sends nothing by itself: the program asks, with an application password of an administrator who has the export and manage_options capabilities. Contentrain Migrate uses these routes when you give it such a password to migrate this site; what Migrate then does with the content is governed by Contentrain's terms (https://contentrain.io/terms-of-service) and privacy policy (https://contentrain.io/privacy-policy). The program that starts an export chooses its scope: Migrate asks for private content (drafts, pending, scheduled, private and password-protected posts, never the password) and for comments, and the exported files carry each post's own status. Revoke the application password in your profile to end that access; exports expire after a day.

== Installation ==

Expand Down Expand Up @@ -72,10 +72,15 @@ The active theme and child theme, and optionally the source files of active plug

== Privacy ==

The plugin stores export ownership and a source revision marker. It sends nothing anywhere on its own; an export leaves the site only when you download it, deliver it to GitHub, or authorize a program to read it through the REST export API with an administrator's application password or a Contentrain Migrate connection key. For a connection key the plugin stores a fingerprint of the key (never the key), the Migrate order it is paired with, and the time and IP address of its last use; creating a new key or revoking it, and uninstalling the plugin, removes them. Export files are written to a private, per-administrator directory, are removed on uninstall, and expire after a day. An export can contain site content, author display names, selected post metadata and, if you chose it, privacy-minimized comments. Treat a downloaded export as you would a WordPress export file. If you deliver to GitHub, the exported content is sent to GitHub under the account whose token you provide; choose a private repository when the export includes draft or private content.
The plugin stores export ownership and a source revision marker. It sends nothing anywhere on its own; an export leaves the site only when you download it, deliver it to GitHub, or authorize a program to read it through the REST export API with an administrator's application password or a Contentrain Migrate connection key. For a connection key the plugin stores a fingerprint of the key (never the key), the Migrate order it is paired with, and the time and IP address of its last use; creating a new key or revoking it, and uninstalling the plugin, removes them. Export files are written to a private, per-administrator directory, are removed on uninstall, and expire after a day. An export can contain site content, author display names, selected post metadata and, if you or the program you authorized chose it, privacy-minimized comments and draft, pending, scheduled, private and password-protected posts (never the password). A program authorized through the REST API chooses the scope; Contentrain Migrate asks for private content. Treat a downloaded export as you would a WordPress export file. If you deliver to GitHub, the exported content is sent to GitHub under the account whose token you provide; choose a private repository when the export includes draft or private content.

== Changelog ==

= 0.6.0 =

* Advanced Custom Fields options pages ("Site settings", footer, contact details) are exported as site-wide fields in the migration data, typed like the fields of a post. They were already in the export as their own entry; a migration could not use them until now.
* Contentrain Migrate now asks for the "private content" scope when it reads an export through the REST API, so drafts, private and password-protected posts stay drafts, pending posts arrive in review, and a scheduled post keeps its publication date. A password-protected post keeps `[protected]`; the password itself never leaves WordPress. The plugin's behaviour is unchanged: the scope is chosen by whoever starts the export, and exports you start yourself are unaffected.

= 0.5.0 =

* Page builders: the Elementor layout tree and page settings, Divi's builder settings, the Elementor kit (global colours, fonts, layout), block-theme global styles and templates are exported without selecting them, so a migration can rebuild the design. Password-protected posts keep none of it.
Expand Down
Loading