{"id":388366,"date":"2026-10-18T15:17:50","date_gmt":"2026-10-18T15:17:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/practice-radar-connector\/"},"modified":"2026-10-18T15:17:14","modified_gmt":"2026-10-18T15:17:14","slug":"practice-radar-connector","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/practice-radar-connector\/","author":23587772,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.1","stable_tag":"0.6.1","tested":"7.1.3","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Practice Radar Connector","header_author":"Practice Radar","header_description":"Lets Practice Radar read your pages and apply the changes you approve there: titles, descriptions, social previews, alt text, structured data, FAQ blocks, internal links, redirects, compressed images and new local pages. Nothing changes without your approval in Practice Radar. A change can be put back from there while that part of the page is as the change left it and the plugin's log still holds its record.","assets_banners_color":"161728","last_updated":"2026-10-18 15:17:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/practiceradar.co.uk\/connector","header_author_uri":"https:\/\/practiceradar.co.uk","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.6.1":{"tag":"0.6.1","author":"practiceradar","date":"2026-10-18 15:17:14","revision":3753224}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3754396,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3753224,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3753224,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3754396,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3753224,"resolution":"1","location":"assets","locale":"","width":1800,"height":429},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3753224,"resolution":"2","location":"assets","locale":"","width":1800,"height":500},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3753224,"resolution":"3","location":"assets","locale":"","width":1800,"height":419},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3753224,"resolution":"4","location":"assets","locale":"","width":1100,"height":696}},"screenshots":{"1":"The settings page under Settings, then Practice Radar, with the site address and token to paste into Practice Radar.","2":"Uploading the plugin zip under Plugins, then Add Plugin.","3":"Activating the plugin after the upload.","4":"One change waiting in Practice Radar: how the Google result would read, why it is proposed, what it aims to do, and the current wording beside the proposed wording with the approve button."}},"plugin_section":[],"plugin_tags":[17214,23314,5777,186,1121],"plugin_category":[55],"plugin_contributors":[287375],"plugin_business_model":[],"class_list":["post-388366","plugin","type-plugin","status-publish","hentry","plugin_tags-alt-text","plugin_tags-dental","plugin_tags-meta-description","plugin_tags-seo","plugin_tags-structured-data","plugin_category-seo-and-marketing","plugin_contributors-practiceradar","plugin_committers-practiceradar"],"banners":{"banner":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/banner-772x250.png?rev=3754396","banner_2x":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/banner-1544x500.png?rev=3753224","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/icon-128x128.png?rev=3754396","icon_2x":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/icon-256x256.png?rev=3753224","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/screenshot-1.png?rev=3753224","caption":"The settings page under Settings, then Practice Radar, with the site address and token to paste into Practice Radar."},{"src":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/screenshot-2.png?rev=3753224","caption":"Uploading the plugin zip under Plugins, then Add Plugin."},{"src":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/screenshot-3.png?rev=3753224","caption":"Activating the plugin after the upload."},{"src":"https:\/\/ps.w.org\/practice-radar-connector\/assets\/screenshot-4.png?rev=3753224","caption":"One change waiting in Practice Radar: how the Google result would read, why it is proposed, what it aims to do, and the current wording beside the proposed wording with the approve button."}],"raw_content":"<!--section=description-->\n<p>Practice Radar is search growth software for UK dental practices. It maps every practice competing with yours in Google, checks the rankings weekly, and audits the copy on your pages. This plugin closes the loop: once it is installed, a change you approve in Practice Radar is written to your site.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Reads every public page, including custom post types, with the title and description each one carries now.<\/li>\n<li>Applies the title and meta description you approve through the SEO plugin you already use: Yoast SEO, Rank Math or SEOPress.<\/li>\n<li>Keeps Open Graph titles and descriptions in step with approved changes.<\/li>\n<li>Fills in missing image alt text, on the attachment and in the page where the alt was empty.<\/li>\n<li>Adds one block of structured data to your home page when it has none, and per-page structured data for treatments and people.<\/li>\n<li>Appends a block you approved to the end of a page (an FAQ, a sentence with an internal link), or changes one exact fragment: a link's address or a heading's words. Only that address or those words change. The link or heading keeps its classes, id, colour, target and anything inside it. Where new words would remove formatting inside a heading or link, such as emphasis or a line break, the change is refused and you are told.<\/li>\n<li>On a page laid out with Elementor, adds an approved section as a new Elementor section with one Text Editor widget, in your site's own text style. The rest of Elementor's record of the page is left exactly as it was.<\/li>\n<li>Creates a new page as a draft, with its title tag and description, when you approve a drafted local page. A draft is never reported back as a live page.<\/li>\n<li>Keeps a list of redirects you approved and serves them with a 301, only for an address that has no page. A redirect is refused for an address with a live page, for one that would loop, and for one that points at an address that is itself redirected.<\/li>\n<li>Replaces an image you approved with a compressed copy, as a new attachment. Only tags showing that exact file change, never one showing another file with the same name, and each keeps the size it is shown at. Image, cover and media and text blocks are updated with it, so the block editor still opens them cleanly. An image it cannot change completely is left alone and you are told: one in an older gallery, one inside a theme's or plugin's block that keeps its own record of the image, or one whose block also shows the file another way, such as the background an older WordPress saved for a cropped media and text block. The original stays in the library.<\/li>\n<li>Logs every write with what it changed: the value it replaced, or for page content the exact edits it made, not a copy of the page. It keeps no change the log could not record. If the log ever outgrows what your database will store, its oldest records are cleared and Practice Radar is told which changes it can no longer put back. It reverts any change still in the log on request: content goes back, a created page is trashed, a redirect is removed, a replaced image is restored. A revert only takes out what Practice Radar wrote. If you have edited that part of the page since, or edited or published a page it created, it is left alone and you are told.<\/li>\n<li>Asks LiteSpeed Cache to refresh a page after it changes, when that plugin is present.<\/li>\n<\/ul>\n\n<p><strong>What it does not do<\/strong><\/p>\n\n<ul>\n<li>It never rewrites your own wording or design. It adds what you approved, or changes the one link address, heading or image you approved, and leaves the rest of the page byte for byte as it was. It never touches menus, users or settings.<\/li>\n<li>It never writes anything on its own. Every change waits for you to approve it in Practice Radar.<\/li>\n<li>It adds no scripts that run, no styles and no tracking to your pages. Structured data you approve is printed as data, which browsers do not run.<\/li>\n<li>It makes no requests of its own to any server. It only answers requests from Practice Radar that carry the token shown on its settings page.<\/li>\n<\/ul>\n\n<p><strong>How access works<\/strong><\/p>\n\n<p>On activation the plugin creates a random token and shows it under Settings, then Practice Radar. Practice Radar sends that token in a request header on every call. Anyone without it gets nothing. Regenerating or deleting the plugin ends access at once. No WordPress password is shared.<\/p>\n\n<p><strong>Third-party service<\/strong><\/p>\n\n<p>This plugin is built to work with Practice Radar (https:\/\/practiceradar.co.uk), a paid service run by Practice Radar Limited in the UK. It does nothing until a Practice Radar account has been given the site address and token from its settings page.<\/p>\n\n<p>The plugin itself never contacts Practice Radar or any other server. Once connected, Practice Radar's servers call the plugin's routes on your site, with the token, to:<\/p>\n\n<ul>\n<li>read your published pages: titles, descriptions, social previews, headings, links, images with their alt text, and structured data<\/li>\n<li>read a health summary: the WordPress, PHP and theme versions, and each plugin's version with any waiting update<\/li>\n<li>write a change you approved, read its log, and put a change back<\/li>\n<\/ul>\n\n<p>No visitor data, user accounts or passwords are read or sent. Practice Radar's terms (https:\/\/practiceradar.co.uk\/terms) and privacy notice (https:\/\/practiceradar.co.uk\/privacy) apply to that account.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip under Plugins, then Add Plugin, then Upload Plugin, click Install Now, then Activate Plugin.<\/li>\n<li>Open Settings, then Practice Radar, and copy the site address and token.<\/li>\n<li>In Practice Radar, open Website changes, under Execution in the sidebar, and paste them in.<\/li>\n<\/ol>\n\n<p>A full walkthrough with screenshots is at https:\/\/practiceradar.co.uk\/connector.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20change%20my%20site%20without%20asking%3F\"><h3>Will it change my site without asking?<\/h3><\/dt>\n<dd><p>No. Every proposal waits in Practice Radar until you approve, edit or dismiss it.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>Yoast SEO, Rank Math and SEOPress. Titles and descriptions are written to the fields those plugins use, so the change shows in that plugin too. Without one of them the plugin reads pages but cannot apply title or description changes.<\/p><\/dd>\n<dt id=\"what%20can%20the%20token%20do%3F\"><h3>What can the token do?<\/h3><\/dt>\n<dd><p>Read your pages, and write only what an approved change asks for: metadata, structured data, an appended block, a link's address or a heading's words, a new draft page, a redirect or a replacement image. It cannot read users, settings or comments, and it cannot install anything or change your theme.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20the%20site%20down%3F\"><h3>Does it slow the site down?<\/h3><\/dt>\n<dd><p>No. It runs only when Practice Radar asks it a question, and it adds nothing to your pages except, if you approve it, one block of structured data.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20it%3F\"><h3>How do I remove it?<\/h3><\/dt>\n<dd><p>Deactivate and delete it from Plugins. Titles, descriptions, alt text and page changes already applied stay as they are, because WordPress stores them itself. Redirects and structured data stop, because this plugin serves them. The settings page lists both, and the Deactivate link asks first when any are in use. Put back any change you want first from the Website changes page in Practice Radar.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>The health report no longer lists each plugin's auto-update setting, which Practice Radar never used.<\/li>\n<li>Brought in line with WordPress coding standards. Nothing a site or its visitors see changes.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>On a page laid out with Elementor, a section you approve in Practice Radar is added as a new Elementor section with one Text Editor widget, in your site's own text style, just above the call to action the page closes on or at the end. Only the new section is written, Elementor's own record of the rest of the page stays exactly as it was, and Put back takes the section out again.<\/li>\n<\/ul>\n\n<h4>0.5.5<\/h4>\n\n<ul>\n<li>A new section can be added just above a stretch of the page you choose, such as the call to action a page closes on, instead of only at the very end. The stretch must be on the page exactly once or nothing is written, and Put back takes the section out again while it is still exactly as written.<\/li>\n<\/ul>\n\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>A read-only health report for Practice Radar's Site health card: WordPress, PHP and theme versions, and each plugin with its version, any waiting update and whether it updates itself. Nothing on the site changes.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Safe beside an older copy in Code Snippets, whichever loads first: this copy waits, does nothing and says so in the dashboard until the older copy is switched off. Before this, a site with the old snippet active showed a critical error once the plugin was activated.<\/li>\n<li>Updates now come from Practice Radar and appear on the Plugins screen like any other update. Automatic updates are switched on once, the first time this version runs, and can be switched off from the Plugins screen.<\/li>\n<li>Declares the WordPress and PHP versions it needs, so WordPress refuses to activate it where it could not run.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>If another copy of the connector is already running on the site, for example as a Code Snippet, this copy now steps aside and shows a notice in the dashboard instead of stopping with a fatal error. Switch the older copy off and this one takes over with the same connection and change history.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>A change that something on your site would alter as it is saved is refused before anything is written. Where that cannot be seen in advance, the page is put back straight to the database, so no other plugin can touch the put-back, and the page as it was is kept in the plugin's log either way.<\/li>\n<li>Changing a link's address or a heading's words now changes only that address or those words. The link or heading keeps its classes, id, colour, target and anything inside it. A change that would add or remove markup is refused.<\/li>\n<li>An image is matched by its exact file, so a photo with a similar name, or with the same name in another folder, is never swapped or given the wrong alt text. A replaced image keeps the size it is shown at, including a size such as 100%, and is refused if it is not the same shape as the photo each tag shows. Cover and media and text blocks are updated along with image blocks. An image in a block that cannot be updated this way is left alone, including one inside another block that keeps its own record of it and one whose block also shows the old file as a background. An image tag that is not written cleanly, such as one with a stray quote mark, is left alone. Alt text that is refused leaves the media library as it was too.<\/li>\n<li>A link fix only ever changes where the link points, and only to a full address or one starting with \/. A heading change only changes the heading's words, and is refused where it would remove formatting inside the heading.<\/li>\n<li>A change the site will not record in the plugin's log is not made, and a page put back after a refused change is cleared from LiteSpeed Cache. The log records what each change wrote, not two copies of the page, and clears its oldest records only if it outgrows what the site's database will store, telling Practice Radar which changes can no longer be put back. A database error that has nothing to do with size never clears records.<\/li>\n<li>A title and description sent together are both left as they were when the site refuses either one.<\/li>\n<li>Putting a change back only takes out what Practice Radar wrote, where it wrote it. If that part of the page has been edited since, it is left alone and you are pointed to the page's revisions.<\/li>\n<li>A page Practice Radar created is only trashed on revert while nobody has edited or published it.<\/li>\n<li>A redirect is only served for an address that has no page, so a page you publish later always wins. A redirect is refused for an address with a live page, for one that would loop, and for one that points at an address that is itself redirected.<\/li>\n<li>A draft page is no longer reported back with its preview address as if it were live, and a new page no longer repeats its title as a second main heading.<\/li>\n<li>Titles, descriptions, page structured data, link and heading changes and redirects are checked against the value they were proposed against, so a change made by hand since is never overwritten.<\/li>\n<li>The settings page lists the redirects and structured data the plugin serves, and what stops if it is switched off.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Every change to a page's content is saved exactly as written and read back. If anything on the site alters it during the save, the page is put back as it was and the change is refused, so a change can fail but cannot damage the rest of the page. Earlier versions could strip embedded scripts, maps and forms from the whole page.<\/li>\n<li>Values are stored with their backslashes intact, so structured data and escaped text survive.<\/li>\n<li>Reverting a change leaves any later edits alone. Where the page has been edited since, only the part Practice Radar changed is put back, and a title or redirect changed by hand since is left as it is.<\/li>\n<li>Pages built with Elementor, Beaver Builder, Bricks, Oxygen or Breakdance are left alone, and so is a page someone has open in the editor.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Tells IndexNow when an approved change goes live, so Bing and others re-read the page sooner. Serves the IndexNow key file.<\/li>\n<li>A button to make a new token.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Structured data is printed safely even if a value contains \"\".<\/li>\n<li>Redirects must point to the same site, checked by exact host.<\/li>\n<li>Uploaded images are checked by their content, not their file name.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Append a block to a page, replace one exact fragment, create a draft page, redirects, replacement images, per-page structured data, and a revert for each.<\/li>\n<li>A full read of one page: content, headings, links, excerpt, thumbnail.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Open Graph title and description fields.<\/li>\n<li>Image alt text: list images without alt, set alt on the attachment and in the page.<\/li>\n<li>One structured data block for the home page, with a revert.<\/li>\n<li>Log now covers metadata, content and schema changes.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: page list, title and description read and write through Yoast SEO, Rank Math or SEOPress, log and revert, LiteSpeed purge.<\/li>\n<\/ul>","raw_excerpt":"Lets Practice Radar read your page titles, descriptions, social previews and image alt text, and apply the changes you approve there.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388366","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=388366"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/practiceradar"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388366"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388366"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388366"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388366"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388366"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}