=== Blogged Publishing ===
Contributors: boostyard
Tags: publishing, rest-api, content, integration
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Publish approved Blogged articles to WordPress with copied images, revision checks, explicit updates, and withdrawal to drafts.

== Description ==

Blogged Publishing connects a WordPress site to [Blogged](https://blogged.dev/), the blogging service for SaaS and micro-SaaS teams.

Keep research, drafting, review, and scheduling in Blogged, and publish approved articles on your own WordPress site. This companion provides authenticated REST endpoints that Blogged uses to deliver and manage its articles.

Features:

* Publish full articles or explicitly selected summaries with copied images.
* Identify managed articles so delivery retries can find the same article.
* Check article revisions before replacing an existing managed article.
* Apply reviewed updates and withdraw articles by returning them to draft status.
* Set supported SEO metadata and noindex settings for managed articles, including Yoast SEO and Rank Math metadata when those plugins are active.
* Use WordPress Application Passwords and existing WordPress user capabilities.

Activating the plugin does not publish articles or connect a Blogged Project. A Project owner must configure the destination in Blogged. The plugin does not change Blogged's generation, scheduling, billing, or article allowances.

=== External service and data ===

The plugin is free. Using Blogged's hosted generation and publishing workflow requires a Blogged account and an eligible paid Project. See [plans](https://blogged.dev/pricing), [terms](https://blogged.dev/policies/terms), and [privacy](https://blogged.dev/policies/privacy).

This plugin does not make outbound requests to Blogged or send telemetry. Once you explicitly connect your site in Blogged, Blogged makes authenticated requests to this site's REST endpoints. Those requests can create and read managed article text, excerpts, metadata, publication status, and media. Reading a managed article for an explicitly requested review returns that content to Blogged. WordPress enforces the supplied user's capabilities, including permission to edit each existing article or media record.

Provide Blogged with a dedicated WordPress Application Password over HTTPS. Do not provide your main WordPress login password. Revoke the Application Password in WordPress to remove that credential's access.

== Installation ==

1. Upload the blogged-publishing folder to wp-content/plugins, or install the ZIP through Plugins > Add New > Upload Plugin.
2. Activate Blogged Publishing.
3. Ensure the site uses public HTTPS and allows authenticated WordPress REST API requests.
4. Use a WordPress user allowed to publish posts and upload files. That user also needs permission to edit any existing managed posts it will update.
5. Create a dedicated Application Password in that user's WordPress profile.
6. Open Integrations in your Blogged Project, choose WordPress, and provide the site's URL, username, and Application Password.
7. Verify the connection and explicitly save the Project's routing. Follow the [integration setup guide](https://app.blogged.dev/integrations/guide).

Conditional publishing requires InnoDB storage for the WordPress posts, postmeta, terms, term_taxonomy, and term_relationships tables, and database permission to use named locks and transactions. The plugin refuses conditional publishing when the required storage support is unavailable.

== Frequently Asked Questions ==

= Does activating the plugin publish or migrate my existing articles? =

No. Activation registers the authenticated endpoints. Blogged routing applies to newly opted-in articles; existing articles are not automatically migrated.

= Are edits sent automatically to WordPress? =

Changes to an existing managed article require an explicit reviewed synchronization in Blogged. Revision checks refuse stale replacement requests.

= Does withdrawal delete my article? =

No. Withdrawal returns the managed WordPress post to draft status. Deactivating or removing this plugin also leaves existing posts and media in WordPress.

= Can an author overwrite another person's posts? =

WordPress's edit_post capability is checked for each existing managed post. Permission to publish new posts alone does not allow replacing someone else's post.

= Which image types are supported? =

PNG, JPEG, WebP, and GIF. An individual upload is limited to the smaller of 5 MiB or the site's upload limit. Dimensions and multisite storage space are also checked. SVG and executable uploads are not accepted by these endpoints.

= Does this replace my WordPress theme or SEO plugin? =

No. Your theme renders the article. The companion sets metadata for managed articles and supports Yoast SEO and Rank Math when installed. It does not guarantee search-engine indexing or rankings.

= How do I stop publishing through this connection? =

Pause or disconnect the destination in Blogged. Finish any desired withdrawals before disconnecting. You can also revoke the WordPress Application Password. An already accepted request may finish.

= Where can I get help? =

Use the [Blogged integration guide](https://app.blogged.dev/integrations/guide) or email hello@blogged.dev. Include the error code and WordPress version; do not send passwords or API keys.

== Changelog ==

= 1.0.1 =
* Add distribution metadata, setup instructions, service disclosures, and the GPL license.
* Document why managed-identity lookups span language filters; the publishing protocol and behavior remain unchanged.

= 1.0.0 =
* Initial direct-download release with authenticated publication, media transfer, revision checks, and withdrawal.

== Upgrade Notice ==

= 1.0.1 =
Distribution documentation update. Existing managed posts and publication identities are preserved; no migration is required.
