{"id":277233,"date":"2026-01-27T21:28:58","date_gmt":"2026-01-27T21:28:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/organicstack-publisher\/"},"modified":"2026-04-02T22:53:29","modified_gmt":"2026-04-02T22:53:29","slug":"organicstack-publisher","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/organicstack-publisher\/","author":23442264,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.7","stable_tag":"1.0.7","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"OrganicStack Publisher","header_author":"OrganicStack","header_description":"Clean API for automated WordPress content publishing with AI integration support. Designed for use with OrganicStack.","assets_banners_color":"dbdde0","last_updated":"2026-04-02 22:53:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/organicstack.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":413,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"organicstack","date":"2026-01-29 20:35:08"},"1.0.1":{"tag":"1.0.1","author":"organicstack","date":"2026-01-29 20:48:21"},"1.0.2":{"tag":"1.0.2","author":"organicstack","date":"2026-03-03 02:49:44"},"1.0.3":{"tag":"1.0.3","author":"organicstack","date":"2026-03-06 05:00:15"},"1.0.4":{"tag":"1.0.4","author":"organicstack","date":"2026-03-06 15:26:19"},"1.0.5":{"tag":"1.0.5","author":"organicstack","date":"2026-03-10 00:33:30"},"1.0.6":{"tag":"1.0.6","author":"organicstack","date":"2026-04-02 22:48:32"},"1.0.7":{"tag":"1.0.7","author":"organicstack","date":"2026-04-02 22:53:29"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3458397,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3458397,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3458397,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3458397,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3458397,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin settings page showing API key configuration","2":"API endpoints documentation in admin panel","3":"Default author selection dropdown"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,2016,569,243233,268],"plugin_category":[40],"plugin_contributors":[254791],"plugin_business_model":[],"class_list":["post-277233","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-auto-publish","plugin_tags-automation","plugin_tags-blog-automation","plugin_tags-scheduling","plugin_category-calendar-and-events","plugin_contributors-organicstack","plugin_committers-organicstack"],"banners":{"banner":"https:\/\/ps.w.org\/organicstack-publisher\/assets\/banner-772x250.png?rev=3458397","banner_2x":"https:\/\/ps.w.org\/organicstack-publisher\/assets\/banner-1544x500.png?rev=3458397","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/organicstack-publisher\/assets\/icon.svg?rev=3458397","icon":"https:\/\/ps.w.org\/organicstack-publisher\/assets\/icon.svg?rev=3458397","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>OrganicStack Publisher provides a comprehensive REST API for automated WordPress content publishing. It enables external applications (including OrganicStack) to publish posts, manage media, handle categories and tags, create authors, and manage content programmatically through a secure API key authentication system.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>REST API Endpoints<\/strong> - Complete set of REST API endpoints for WordPress content management<\/li>\n<li><strong>API Key Authentication<\/strong> - Secure API key-based authentication instead of WordPress application passwords<\/li>\n<li><strong>Post Publishing<\/strong> - Publish single posts or bulk publish multiple posts at once<\/li>\n<li><strong>Media Management<\/strong> - Upload images via base64 or URL with automatic optimization<\/li>\n<li><strong>Category &amp; Tag Management<\/strong> - Get, create, and manage categories and tags<\/li>\n<li><strong>Author Management<\/strong> - Create authors and manage author profiles with custom avatars<\/li>\n<li><strong>SEO Support<\/strong> - Built-in support for Yoast SEO and RankMath meta fields<\/li>\n<li><strong>Custom Meta Fields<\/strong> - Support for custom post meta fields<\/li>\n<li><strong>CORS Support<\/strong> - Built-in CORS handling for cross-origin requests<\/li>\n<li><strong>Site Information<\/strong> - Get detailed site information including WordPress version, PHP version, and more<\/li>\n<\/ul>\n\n<h4>Security Features<\/h4>\n\n<ul>\n<li>API key authentication with secure key generation<\/li>\n<li>Input sanitization and validation on all endpoints<\/li>\n<li>Proper permission checks for all operations<\/li>\n<li>Secure file upload handling<\/li>\n<\/ul>\n\n<h4>Data Integrity (Multi-Tenant) - CRITICAL<\/h4>\n\n<ul>\n<li>Author avatars are time-consuming to create. They MUST NEVER be removed by a plugin update.<\/li>\n<li>This plugin ONLY manages OrganicStack avatars (organicstack_avatar_id, organicstack_created).<\/li>\n<li>We NEVER delete, remove, or modify any author\/avatar data from WordPress or other plugins.<\/li>\n<li>Gravatar, Simple Local Avatars, User Avatar, and all other avatar systems are UNTOUCHED.<\/li>\n<li>See AVATAR_POLICY.md - violating this causes hundreds of lost avatars and customer complaints.<\/li>\n<\/ul>\n\n<h3>API Documentation<\/h3>\n\n<h4>Base URL<\/h4>\n\n<p>All endpoints are available at: <code>\/wp-json\/organicstack-publisher\/v1\/<\/code><\/p>\n\n<h4>Authentication<\/h4>\n\n<p>Include your API key in requests using either:\n* Header: <code>X-API-Key: your-api-key<\/code>\n* Body: <code>{\"api_key\": \"your-api-key\"}<\/code><\/p>\n\n<h4>Available Endpoints<\/h4>\n\n<ul>\n<li><code>GET \/ping<\/code> - Test basic connectivity (no auth required)<\/li>\n<li><code>GET \/test-connection<\/code> - Test authenticated connection<\/li>\n<li><code>POST \/auth<\/code> - Authenticate with API key<\/li>\n<li><code>POST \/publish<\/code> - Publish a single post<\/li>\n<li><code>POST \/bulk-publish<\/code> - Publish multiple posts<\/li>\n<li><code>POST \/upload-media<\/code> - Upload images<\/li>\n<li><code>GET \/categories<\/code> - Get all categories<\/li>\n<li><code>GET \/tags<\/code> - Get all tags<\/li>\n<li><code>GET \/authors<\/code> - Get all authors<\/li>\n<li><code>POST \/create-author<\/code> - Create a new author<\/li>\n<li><code>GET \/site-info<\/code> - Get site information<\/li>\n<\/ul>\n\n<p>For detailed API documentation, see the admin panel after installation.<\/p>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>MySQL 5.6 or higher<\/li>\n<li>HTTPS recommended for production use<\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>For support and questions:\n* Check WordPress error logs for debugging\n* Verify plugin settings in the admin panel\n* Test API endpoints using curl or Postman\n* Ensure WordPress and PHP versions meet requirements<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is free software: you can redistribute it and\/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License or any later version.<\/p>\n\n<!--section=installation-->\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin files<\/li>\n<li>Upload the <code>organicstack-publisher<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Navigate to OrganicStack in the WordPress admin menu<\/li>\n<li>Copy your generated API key for use in your application<\/li>\n<\/ol>\n\n<h4>ZIP Upload<\/h4>\n\n<ol>\n<li>Create a ZIP file of the plugin directory<\/li>\n<li>Go to Plugins \u2192 Add New \u2192 Upload Plugin in WordPress admin<\/li>\n<li>Upload the ZIP file and activate<\/li>\n<li>Configure your API key in OrganicStack Publisher settings<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20this%20plugin%20for%3F\"><h3>What is this plugin for?<\/h3><\/dt>\n<dd><p>This plugin provides a REST API for automated WordPress content publishing, allowing external applications to manage WordPress content programmatically.<\/p><\/dd>\n<dt id=\"how%20do%20i%20authenticate%3F\"><h3>How do I authenticate?<\/h3><\/dt>\n<dd><p>The plugin generates an API key automatically upon activation. Use this key in the <code>X-API-Key<\/code> header or in the request body as <code>api_key<\/code> for all authenticated requests.<\/p><\/dd>\n<dt id=\"what%20endpoints%20are%20available%3F\"><h3>What endpoints are available?<\/h3><\/dt>\n<dd><p>The plugin provides endpoints for:\n* Testing connection (<code>\/ping<\/code>, <code>\/test-connection<\/code>)\n* Publishing posts (<code>\/publish<\/code>, <code>\/bulk-publish<\/code>)\n* Media upload (<code>\/upload-media<\/code>)\n* Category and tag management (<code>\/categories<\/code>, <code>\/tags<\/code>)\n* Author management (<code>\/authors<\/code>, <code>\/create-author<\/code>)\n* Site information (<code>\/site-info<\/code>)<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20seo%20plugins%3F\"><h3>Does this work with SEO plugins?<\/h3><\/dt>\n<dd><p>Yes, the plugin supports Yoast SEO and RankMath meta fields including meta descriptions and titles.<\/p><\/dd>\n<dt id=\"can%20i%20upload%20images%3F\"><h3>Can I upload images?<\/h3><\/dt>\n<dd><p>Yes, you can upload images via base64 encoding or by providing a URL. The plugin handles image optimization automatically.<\/p><\/dd>\n<dt id=\"is%20this%20secure%3F\"><h3>Is this secure?<\/h3><\/dt>\n<dd><p>Yes, all endpoints use API key authentication, and all inputs are sanitized and validated according to WordPress security standards.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>IndexNow support natively<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Removal of uneeded author utils<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Authors endpoints now return only users with Author role (excludes administrator and editor)<\/li>\n<li>Uses role__in and role__not_in for strict role filtering<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Removed destructive avatar meta cleanup - plugin no longer deletes organicstack_avatar_id under any circumstances; avatars stay untouched regardless of plugin updates<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added option to schedule posts from manual generator<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed avatar compatibility issue - plugin now properly preserves avatars from third-party plugins (Simple Local Avatars, User Avatar, etc.)<\/li>\n<li>Improved avatar filter to only process users with OrganicStack avatars, preventing interference with existing author avatars<\/li>\n<li>Added automatic cleanup of invalid avatar attachment references<\/li>\n<li>Enhanced compatibility with WordPress default Gravatar system<\/li>\n<li>Fixed issue where pre-existing authors lost their avatars after plugin installation<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Custom REST API endpoints<\/li>\n<li>API key authentication<\/li>\n<li>Post publishing functionality<\/li>\n<li>Media upload support<\/li>\n<li>Category and tag management<\/li>\n<li>Author management<\/li>\n<li>SEO meta field support<\/li>\n<li>Admin settings page<\/li>\n<\/ul>","raw_excerpt":"Clean API for automated WordPress content publishing with AI integration support. Designed for use with OrganicStack.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/277233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=277233"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/organicstack"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=277233"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=277233"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=277233"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=277233"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=277233"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=277233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}