Oorly Accessibility Widget Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Oorly adds an accessibility widget to your WordPress site and scans your pages against WCAG. Visitors adapt the page to how they read; your team gets a list of what to fix in the code.
The widget gives visitors seventeen controls they switch on for themselves — text size, spacing, contrast, reading guide, read aloud and more. The report crawls your site on a schedule and hands your developers the exact CSS selector for every WCAG failure it finds.
This plugin puts the widget on your WordPress site. Install it, paste your site code, done. No theme changes, no header.php override, no build step.
A widget changes how a page is presented, not what it is made of. It cannot write your alt text or label your form fields. If you believe a widget alone makes a site accessible, please do not install this one — the report is the part that gets a site fixed.
What this plugin does
One settings form and one script tag. The site code you save is stored as a WordPress option, so it survives a theme switch, and what reaches the browser is:
<script src="https://widget.oorly.com/widget.js?c=SITE_CODE" id="oorly-widget-js" defer></script>
The script is registered with wp_enqueue_script() on the wp_enqueue_scripts hook, with in_footer false so it lands in <head>, and the defer loading strategy so the browser keeps parsing the document while the file downloads. Nothing is printed by hand, so the tag is subject to the same filters as any other enqueued script and other plugins can dequeue it by its oorly-widget handle.
No ver query argument is added. The file is versioned by Oorly on their own CDN, and appending this plugin’s version would only cache-bust an asset that is not ours.
Requirements
- WordPress 6.3 or later, PHP 7.4 or later
- An Oorly account and site code — free tier, no card, does not expire: https://oorly.com
widget.oorly.comallowed in your CSP, if you send one- A publicly reachable site, if you want the report as well
No libraries, no dependencies, no database tables.
Validation and security
The value entered on the settings page is reduced to the [A-Za-z0-9_-] character set before it is stored; if anything was stripped, a warning appears after saving. A malformed or deliberately crafted value pasted into the field therefore cannot inject HTML into <head>. The URL is assembled with add_query_arg() and passed through esc_url() before printing.
Viewing and saving the settings page requires the manage_options capability. The form runs through the WordPress Settings API, so nonce verification and option allowlisting are handled as standard.
External services
This plugin loads a script from Oorly, a third-party service operated by Drupart.
The script https://widget.oorly.com/widget.js is requested by the visitor’s browser on every front-end page once a site code is saved, with that code as the c query parameter. The request tells Oorly the visitor’s IP address, user agent and the page they are on — the same information any browser sends when fetching a file. The plugin itself sends nothing: it neither hosts the script nor alters its contents, and it makes no server-side calls to Oorly.
What the widget does once it runs, and what it stores, is governed on Oorly’s side and keyed to the site code. Clearing the site code and saving stops the script from being added at all.
- Site: https://oorly.com
- Terms: https://oorly.com/terms-of-service
- Privacy: https://oorly.com/privacy-policy
Interface languages
The plugin is fully translatable. Translations are managed by the community on translate.wordpress.org and delivered through the standard WordPress update system; WordPress picks the language from the site setting, or from the per-user language under Users > Profile.
Additional information
There is one option row and nothing else. The plugin creates no database tables, schedules no cron events, registers no REST routes, and prints no admin notices or dashboard widgets. Deactivating it takes the script off your pages and leaves the saved code alone; deleting it clears the code as well.
The script is enqueued under the handle oorly-widget, so it can be taken off selected pages without deactivating anything:
add_action( 'wp_enqueue_scripts', function () { if ( is_page( 'checkout' ) ) { wp_dequeue_script( 'oorly-widget' ); } }, 20 );
On multisite the setting belongs to the site, not the network. Every site stores its own code and can be switched off on its own, so network activation is safe — but each site needs its code entered once.
This plugin is the widget half of Oorly. The report needs no plugin at all: it crawls your site from the outside, so it runs whether or not this is installed. If you only want the report, you do not need this.
The widget script is served from Oorly’s servers. This plugin neither hosts it nor alters its contents — what the widget does once it runs is governed on Oorly’s side and keyed to your site code. Clearing the field stops the script from being requested at all.
Nothing here is minified, compiled or generated. The plugin is one readable PHP file and its translations, so what you install is what was written.
Questions and bug reports belong in the support forum for this plugin. Anything about your Oorly account, your site code or the report belongs at https://oorly.com.
Screenshots
No screenshots provided
