{"id":302818,"date":"2026-05-04T08:02:55","date_gmt":"2026-05-04T08:02:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/rankoak-connect\/"},"modified":"2026-05-04T08:01:59","modified_gmt":"2026-05-04T08:01:59","slug":"rankoak-connect","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/rankoak-connect\/","author":23484790,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.6","stable_tag":"1.3.6","tested":"6.9.4","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"RankOak Connect","header_author":"RankOak","header_description":"Publish from RankOak to WordPress with a one-time API key you create here \u2014 paste it into RankOak. Does not create WordPress application passwords or custom logins.","assets_banners_color":"","last_updated":"2026-05-04 08:01:59","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/rankoak.com\/","header_plugin_uri":"","header_author_uri":"https:\/\/rankoak.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.6":{"tag":"1.3.6","author":"rankoak1","date":"2026-05-04 08:01:59"}},"upgrade_notice":{"1.3.6":"<p>Review compliance release: enqueued admin CSS\/JS assets instead of direct <code>\/<\/code> output.<\/p>","1.3.5":"<p>Sanitize HTTPS server variable for Plugin Check \/ PHPCS.<\/p>","1.3.4":"<p>Maintenance: Plugin Check compatibility (file delete, $_SERVER sanitization, readme short description length).<\/p>","1.3.3":"<p>Visual-only: RankOak-branded greens on the API key modal.<\/p>","1.3.2":"<p>Clearer onboarding: new key is shown in a <strong>pop-up modal<\/strong> with a copy button (replacing only a small admin notice).<\/p>","1.3.0":"<p>Major update: use <strong>RankOak Connect<\/strong> in WordPress to generate an API key and paste it in RankOak. Reconnect in RankOak if you used the old flow.<\/p>","1.2.1":"<p>Maintenance release for WordPress.org Plugin Check (tested header, translations loading, uninstall cleanup).<\/p>","1.2.0":"<p>Administrators now confirm the RankOak connection on a dedicated screen before an application password is created. No change required in RankOak beyond updating the plugin on your site.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.6"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[569,597,166,7143,23853],"plugin_category":[],"plugin_contributors":[261812],"plugin_business_model":[],"class_list":["post-302818","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-integration","plugin_tags-posts","plugin_tags-publishing","plugin_tags-rest-api","plugin_contributors-rankoak1","plugin_committers-rankoak1"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/rankoak-connect.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>RankOak Connect<\/strong> links your WordPress site to <a href=\"https:\/\/rankoak.com\/\">RankOak<\/a>, an SEO content platform that drafts and publishes articles for you. After you install this plugin:<\/p>\n\n<ol>\n<li>Open <strong>RankOak Connect<\/strong> in your WordPress admin and click <strong>Generate API key<\/strong>.<\/li>\n<li>Copy the key from the pop-up (you only see the full key once).<\/li>\n<li>Paste it into RankOak when connecting your site.<\/li>\n<\/ol>\n\n<p>RankOak then calls your site\u2019s REST API using that key to create posts (and optional tags). <strong>This plugin does not<\/strong> create WordPress application passwords or add custom login flows \u2014 you stay in control with a revocable site key.<\/p>\n\n<p><strong>What this plugin does<\/strong><\/p>\n\n<ul>\n<li><strong>RankOak Connect<\/strong> admin screen: <strong>Generate<\/strong> \/ <strong>regenerate<\/strong> \/ <strong>revoke<\/strong> a site API key<\/li>\n<li>A read-only public REST check so RankOak can see the plugin is active (<code>\/wp-json\/rankoak\/v1\/ping<\/code>)<\/li>\n<li>Authenticated REST routes protected by the API key (e.g. verify identity, create posts) when you connect from RankOak<\/li>\n<\/ul>\n\n<p><strong>Who should use it<\/strong><\/p>\n\n<p>Site administrators who use RankOak and want a one-key connection similar to other SaaS \u201cgenerate API key in WordPress\u201d plugins.<\/p>\n\n<p><strong>Privacy<\/strong><\/p>\n\n<p>This plugin does not send analytics to RankOak. Your site is contacted by RankOak\u2019s servers when you have saved an API key in RankOak and use RankOak features that publish to WordPress, as described under <strong>External services<\/strong>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin is an interface to <strong>RankOak<\/strong>, a third-party SaaS product.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> RankOak (<code>https:\/\/rankoak.com\/<\/code>)<\/li>\n<li><strong>What is transmitted:<\/strong> When you use RankOak to publish, RankOak\u2019s servers call your site\u2019s WordPress REST API on routes registered by this plugin, using the API key you generated. Post titles, content, and optional images are sent over HTTPS to your own WordPress site only\u2014not to unrelated third parties for advertising or tracking.<\/li>\n<li><strong>When it runs:<\/strong> When you have connected the site in RankOak (saved the key) and use RankOak features that create or update posts.<\/li>\n<li><strong>Terms of use:<\/strong> https:\/\/rankoak.com\/terms<\/li>\n<li><strong>Privacy:<\/strong> https:\/\/rankoak.com\/privacy<\/li>\n<\/ul>\n\n<p>No other external servers are contacted by this plugin for tracking or telemetry.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>In WordPress admin, open <strong>RankOak Connect<\/strong> and click <strong>Generate API key<\/strong>. Copy the key from the pop-up (full key is only shown once).<\/li>\n<li>In your RankOak account, connect WordPress and paste the API key when prompted.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20rankoak%20account%3F\"><h3>Do I need a RankOak account?<\/h3><\/dt>\n<dd><p>Yes. RankOak is a separate service. This plugin stores a key for RankOak to use the documented REST API.<\/p><\/dd>\n<dt id=\"who%20can%20generate%20the%20api%20key%3F\"><h3>Who can generate the API key?<\/h3><\/dt>\n<dd><p>Users with the <code>manage_options<\/code> capability (typically administrators).<\/p><\/dd>\n<dt id=\"can%20i%20rotate%20the%20key%3F\"><h3>Can I rotate the key?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>Regenerate<\/strong> or <strong>Revoke<\/strong> on the RankOak Connect screen. After rotating, update the key in RankOak.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20modify%20public%20pages%20on%20my%20site%3F\"><h3>Does this plugin modify public pages on my site?<\/h3><\/dt>\n<dd><p>No. It does not inject scripts, links, or credits on the front end of your website.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Review compliance: move admin modal CSS\/JS from raw <code>&lt;style&gt;<\/code>\/<code>&lt;script&gt;<\/code> output to proper <code>admin_enqueue_scripts<\/code> assets.<\/li>\n<li>Remove inline style attributes from plugin admin markup and style them in the enqueued stylesheet.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Plugin Check: sanitize <code>$_SERVER['HTTPS']<\/code> with <code>sanitize_text_field<\/code> after <code>wp_unslash<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Plugin Check: use <code>wp_delete_file()<\/code> instead of <code>unlink()<\/code>; sanitize <code>$_SERVER<\/code> usage for HTTPS\/admin notice; readme short description \u2264150 characters.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>API key modal: RankOak green styling (backdrop, header gradient, buttons, focus rings) aligned with rankoak.com brand colors.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>After generating or regenerating a key, show a <strong>full-screen modal<\/strong> with copy button and clear security copy (no easy-to-miss admin notice only).<\/li>\n<li>Clearer plugin header and readme description for RankOak + WordPress.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>REST publish: optional <code>tags<\/code> array mapped to WordPress post tags (<code>wp_set_post_tags<\/code>).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><strong>Breaking change:<\/strong> Replaces the previous OAuth + application password exchange with a <strong>plugin API key<\/strong> flow (generate in wp-admin, paste in RankOak).<\/li>\n<li>REST: <code>GET \/wp-json\/rankoak\/v1\/me<\/code> and <code>POST \/wp-json\/rankoak\/v1\/posts<\/code> (Bearer or <code>X-RankOak-Key<\/code>); keys stored with <code>wp_hash_password<\/code>.<\/li>\n<li>Admin: top-level <strong>RankOak Connect<\/strong> menu; nonces on generate\/revoke; no unauthenticated <code>$_GET<\/code> connection parameters.<\/li>\n<li>Removes programmatic <code>WP_Application_Passwords::create_new_application_password<\/code> usage.<\/li>\n<li>Uninstall: remove new options and transients.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>uninstall.php: wrap in prefixed function; PHPCS ignore for required SELECT-by-prefix during uninstall<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>readme: Tested up to 6.9 (directory requirement)<\/li>\n<li>Remove load_plugin_textdomain (WordPress.org loads translations automatically)<\/li>\n<li>uninstall: delete transients via delete_option instead of raw SQL<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Security: require a nonce-protected POST confirmation before creating an application password (CSRF mitigation)<\/li>\n<li>Capability: connection and settings restricted to <code>manage_options<\/code><\/li>\n<li>Add uninstall cleanup for options and OAuth transients<\/li>\n<li>Add GPLv2 license block in the main plugin file; load textdomain; basic REST rate limiting on exchange<\/li>\n<li>Readme: External services disclosure for WordPress.org directory compliance<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Public ping endpoint for connection detection<\/li>\n<li>Auto-save RankOak app origin on first successful OAuth redirect<\/li>\n<li>Packaging improvements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Companion for RankOak: generate an API key in WordPress, paste it in RankOak, publish articles\u2014no WordPress application passwords.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302818","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=302818"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rankoak1"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302818"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302818"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302818"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302818"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302818"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}