GymGrow Connect
GymGrow Connect
Description
GymGrow Connect adds a small set of secure REST API endpoints under the gymgrow/v1 namespace so an external system (for example, an AI content pipeline) can:
- Create or update a post — title, content, excerpt, slug, categories, tags, schedule date — in a single request.
- Set RankMath SEO fields (SEO title, meta description, focus keyword, canonical URL, robots) on the same request or on an existing post.
- Upload an image from a multipart file or a remote URL, set its alt text, and optionally assign it as the featured image.
It replaces ad-hoc functions.php snippets with a versioned, capability-checked plugin.
Endpoints
POST /wp-json/gymgrow/v1/article— publish/update an article (also sets SEO and featured image).POST /wp-json/gymgrow/v1/media— upload an image.POST /wp-json/gymgrow/v1/seo/{id}— update RankMath SEO fields for a post.
A backward-compatible alias POST /wp-json/custom/v1/rankmath/{id} is also registered for pipelines that used the legacy route.
Authentication
Requests are authenticated with WordPress’s own user authentication — use an Application Password (Basic Auth) for a user who can publish posts. Permissions are enforced per route with capability checks (publish_posts, upload_files, edit_post). You may optionally enable a second-factor shared secret (X-GymGrow-Key header) from the settings screen.
This plugin does not call any external services and stores no personal data.
Installation
- Upload the
gymgrow-connectfolder to/wp-content/plugins/, or install the ZIP via Plugins Add New Upload Plugin. - Activate the plugin through the Plugins screen.
- (Optional) Visit Settings GymGrow Connect to generate an API key, choose a default category, and set a default status.
- Create an Application Password for the publishing user under Users Profile, and use it as Basic Auth in your pipeline.
Faq
No. If RankMath is active the SEO fields take effect immediately. If not, the meta is still stored under the RankMath meta keys and becomes live once RankMath is installed.
Every route has a capability-based permission_callback. Publishing requires publish_posts, uploads require upload_files, and SEO updates require edit_post on the target post. You can additionally require a matching X-GymGrow-Key header.
No. The plugin only receives requests; it does not phone home or contact third-party services.
Reviews
Changelog
1.0.3
- Security: omitting the
statusparameter now creates or updates a draft instead of publishing. Publishing requires explicitly passingstatus=publish, which remains gated by thepublish_postscapability.
1.0.2
- Security: editing an existing post that is already published, private, or scheduled (future) now requires the
publish_postscapability even when the request does not change the status.
1.0.1
- Security: the article endpoint now requires the
publish_postscapability when an update changes a post to a published, private, or scheduled (future) status, not justedit_post.
1.0.0
- Initial release: article publish endpoint, media upload endpoint, RankMath SEO endpoint, optional API key, settings screen.