Repository navigation
Releases: throughout-org/rankout-wp-plugin
Release list
v1.2.0
Structured data (schema.org JSON-LD) tools — the missing capability behind "Site has zero structured data" opportunities that previously failed to implement.
- New: wp_get_post_schema / wp_update_post_schema add JSON-LD (Article, FAQPage, BreadcrumbList, Person, Product, Review, HowTo, Event, VideoObject, Recipe) to one post/page. One block per type per post — re-adding a type replaces it rather than duplicating.
- New: wp_get_site_schema / wp_update_site_schema do the same site-wide (Organization, WebSite, LocalBusiness), output on every page.
- Safety: wp_update_site_schema refuses Organization/WebSite outright when Yoast, Rank Math, or All in One SEO is active — those plugins already generate both automatically, and a second independently-authored one is a duplicate-identity problem, not a harmless extra copy. Every read reports which SEO plugin (if any) is active.
- wp_update_site_schema requires manage_options — the plugin's first write tool with no single post to check edit rights against.
- Nothing here publishes anything; every write is still a draft proposal a human approves in RankOut before it reaches the live site.
v1.1.0
Draft creation: RankOut can now add new posts and pages, not just edit existing ones.
- New: wp_create_post / wp_create_page create content as a DRAFT only. Nothing can publish; publishing always stays a human action in wp-admin. A slug is required and must be unused, so an existing page can never be overwritten or duplicated. An identical retry returns the draft it already made.
- New: wp_trash_created_post undoes a create. It refuses anything RankOut didn't create, or that has since been published.
- New: wp_search_posts finds posts/pages by keyword, so RankOut can check a slug is free and find pages to link to.
- If WordPress filters part of the content on save, the draft is deleted and an error is returned instead of keeping a partial page.
- Permission checks: creating needs edit_posts / edit_pages (and edit rights on a parent page); undo needs delete_post.
- Creates are logged under Settings → RankOut Connector → Recent changes.
No new OAuth scopes: these tools use the existing mcp:posts:read / mcp:posts:write permissions, so existing connections keep working.
v1.0.5
WordPress-native editor detection and safe Gutenberg block editing.
- New: wp_detect_editor reports canReadContent/canUpdateTitle/canUpdateSeoMetadata/canSafelyEditContent/requiresBuilderSpecificAdapter/reasonIfUnsupported per post, using WordPress's own has_blocks()/parse_blocks() for Gutenberg and each builder's own postmeta flag for Elementor/Divi.
- New: wp_update_post_block_text edits exactly one paragraph/heading block by position, preserving every other block's structure, attributes, and nested blocks.
- Content-edit restriction is enforced server-side inside update_content() itself, so a direct MCP call is refused on an Elementor/Divi page exactly like an AI-driven one, while title-only updates on the same page still succeed.
- Also includes the prior P0 hotfix: deduped identical-retry revisions, fixed a wp_get_post_revision by-reference call, and corrected MCP JSON-RPC envelope responses.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v1.0.3
Fix rollback correctness: the captured revision_id represented the post-write state, not pre-write, making wp_restore_revision a silent no-op that still reported success. Now explicitly snapshots the pre-write content before each write.
v1.0.2
Fix wp_get_post/wp_get_page returning the filtered display title (wptexturize-transformed) instead of the raw stored post_title — was causing spurious post-write validation failures for titles containing &, --, or similar characters.
v1.0.1
Fix wp_find_post: resolve the site's Posts page URL (Settings > Reading), which WordPress core's url_to_postid() cannot match on its own.
v1.0.0
Initial release: OAuth 2.1 + PKCE authorization server, MCP tool endpoint, content/SEO/site-health/history tools, GitHub-based self-updater.