{"id":272557,"date":"2026-10-14T02:51:22","date_gmt":"2026-10-14T02:51:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/handypal-accessibility-widget\/"},"modified":"2026-10-14T14:28:10","modified_gmt":"2026-10-14T14:28:10","slug":"handypal","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/handypal\/","author":7928724,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.2","stable_tag":"1.5.2","tested":"7.1.3","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"HandyPal Accessibility Widget","header_author":"HandyPal","header_description":"Add the HandyPal accessibility widget to your WordPress site. Make your website accessible to everyone with 43+ accessibility features.","assets_banners_color":"f6f5ef","last_updated":"2026-10-14 14:28:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.handypal.net\/wordpress","header_author_uri":"https:\/\/www.handypal.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":99,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.4":{"tag":"1.4.4","author":"rgenzon","date":"2026-10-14 02:51:06","revision":3745197},"1.5.2":{"tag":"1.5.2","author":"rgenzon","date":"2026-10-14 14:28:10","revision":3746597}},"upgrade_notice":{"1.5.0":"<p>Customize appearance and automatic fixes from the WordPress dashboard. Connect with your private HandyPal account token to use the new controls.<\/p>","1.4.4":"<p>Fixes stale website connections when changing tokens and separates directory and direct-download update channels.<\/p>","1.4.3":"<p>WordPress.org plugin review compliance fixes: proper asset handling, input sanitization, and native auto-updates.<\/p>","1.4.0":"<p>Improved WordPress.org compatibility, proper asset enqueuing, and security hardening.<\/p>","1.3.0":"<p>New 2-column layout makes the settings page easier to navigate with less scrolling.<\/p>","1.2.0":"<p>Added auto-update toggle to keep your plugin automatically updated with the latest security fixes and features.<\/p>","1.1.0":"<p>Security improvements and live widget preview that shows your actual dashboard styling.<\/p>","1.0.9":"<p>New widget preview and page exclusion features. Hide the widget on specific pages like checkout or login.<\/p>","1.0.8":"<p>Updated plugin branding and fixed icon display in WordPress updates.<\/p>","1.0.7":"<p>Adds a &quot;Check for updates&quot; button in plugin settings for easy one-click updates.<\/p>","1.0.1":"<p>Fixes CSS loading issue and adds automatic update notifications.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3745197,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3745197,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3745197,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3745197,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.4","1.5.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3745197,"resolution":"1","location":"assets","locale":"","width":1600,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3745197,"resolution":"2","location":"assets","locale":"","width":1600,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3745197,"resolution":"3","location":"assets","locale":"","width":1084,"height":565},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3745197,"resolution":"4","location":"assets","locale":"","width":340,"height":249}},"screenshots":{"1":"HandyPal widget on a website","2":"Widget settings panel","3":"WordPress admin settings page","4":"Connection status showing active subscription"}},"plugin_section":[],"plugin_tags":[1447,1953,2682,8940,1956],"plugin_category":[34],"plugin_contributors":[286623],"plugin_business_model":[],"class_list":["post-272557","plugin","type-plugin","status-publish","hentry","plugin_tags-a11y","plugin_tags-accessibility","plugin_tags-ada","plugin_tags-disability","plugin_tags-wcag","plugin_category-accessibility","plugin_contributors-rgenzon","plugin_committers-rgenzon"],"banners":{"banner":"https:\/\/ps.w.org\/handypal\/assets\/banner-772x250.png?rev=3745197","banner_2x":"https:\/\/ps.w.org\/handypal\/assets\/banner-1544x500.png?rev=3745197","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/handypal\/assets\/icon-128x128.png?rev=3745197","icon_2x":"https:\/\/ps.w.org\/handypal\/assets\/icon-256x256.png?rev=3745197","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/handypal\/assets\/screenshot-1.png?rev=3745197","caption":"HandyPal widget on a website"},{"src":"https:\/\/ps.w.org\/handypal\/assets\/screenshot-2.png?rev=3745197","caption":"Widget settings panel"},{"src":"https:\/\/ps.w.org\/handypal\/assets\/screenshot-3.png?rev=3745197","caption":"WordPress admin settings page"},{"src":"https:\/\/ps.w.org\/handypal\/assets\/screenshot-4.png?rev=3745197","caption":"Connection status showing active subscription"}],"raw_content":"<!--section=description-->\n<p>HandyPal is an accessibility widget that helps make your website usable for everyone, including people with disabilities. Its visitor tools complement accessibility audits and manual remediation of your site.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Visitor Accessibility Tools<\/strong> - Text, contrast, reading, and navigation preferences<\/li>\n<li><strong>Text-to-Speech<\/strong> - Full page narration for visually impaired users<\/li>\n<li><strong>Language Translation<\/strong> - Language translation tools<\/li>\n<li><strong>Customizable Widget<\/strong> - Match your brand with custom colors and positioning<\/li>\n<li><strong>Accessibility Support<\/strong> - Visitor tools complement accessibility audits and manual remediation<\/li>\n<li><strong>Real-time Accessibility Audits<\/strong> - Identify and fix accessibility issues<\/li>\n<\/ul>\n\n<h4>Accessibility Features Include<\/h4>\n\n<ul>\n<li>Adjust text size, line height, and letter spacing<\/li>\n<li>High contrast modes (smart, high, higher, highest)<\/li>\n<li>Reading guide and reading mask<\/li>\n<li>Dyslexia-friendly font<\/li>\n<li>Hide images option<\/li>\n<li>Keyboard navigation enhancements<\/li>\n<li>Focus indicators<\/li>\n<li>Color blind filters (protanopia, deuteranopia, tritanopia, achromatopsia)<\/li>\n<li>Text-to-speech narration<\/li>\n<li>Page zoom<\/li>\n<li>Stop animations<\/li>\n<li>And many more...<\/li>\n<\/ul>\n\n<h4>Quick Setup<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to Settings &gt; HandyPal<\/li>\n<li>Enter your account token from handypal.net<\/li>\n<li>The widget automatically appears on your site!<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>A HandyPal account (free trial available at <a href=\"https:\/\/www.handypal.net\">handypal.net<\/a>)<\/li>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to HandyPal when you save or verify your account token. It sends the token, site URL, and site name to https:\/\/www.handypal.net\/api\/wordpress\/validate to authenticate and register the website. When enabled, the widget loads JavaScript and CSS from https:\/\/cdn.handypal.net and requests its configuration from HandyPal. Widget usage events may be sent to HandyPal. A HandyPal account and an authorized plan are required.<\/p>\n\n<p>Service terms: https:\/\/www.handypal.net\/terms\nPrivacy policy: https:\/\/www.handypal.net\/privacy<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>HandyPal collects the following data:\n* Your website URL and name (for registration and widget configuration)\n* Widget usage analytics (how often the widget is opened)<\/p>\n\n<p>Visitor analytics are handled by the HandyPal service. See the <a href=\"https:\/\/www.handypal.net\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<h3>Support<\/h3>\n\n<ul>\n<li>Documentation: <a href=\"https:\/\/www.handypal.net\/help\">handypal.net\/help<\/a><\/li>\n<li>Support: <a href=\"https:\/\/www.handypal.net\/contact\">handypal.net\/contact<\/a><\/li>\n<li>Dashboard: <a href=\"https:\/\/www.handypal.net\/dashboard\">handypal.net\/dashboard<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<p>Once the WordPress.org listing is published, search for \"HandyPal\" under Plugins &gt; Add New, install and activate it, then open Settings &gt; HandyPal. Until then, use the manual ZIP installation below.<\/p>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Log in to your WordPress admin dashboard<\/li>\n<li>Go to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the ZIP file and click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<li>Go to Settings &gt; HandyPal to configure<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Log in to your <a href=\"https:\/\/www.handypal.net\/dashboard\">HandyPal dashboard<\/a><\/li>\n<li>Go to Settings and copy your Account Token<\/li>\n<li>In WordPress, go to Settings &gt; HandyPal<\/li>\n<li>Paste your Account Token and save<\/li>\n<li>Your website will be automatically registered and the widget will appear<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20handypal%20account%3F\"><h3>Do I need a HandyPal account?<\/h3><\/dt>\n<dd><p>Yes, you need a HandyPal account to use this plugin. You can start a free 7-day trial at <a href=\"https:\/\/www.handypal.net\">handypal.net<\/a>.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20website%3F\"><h3>Will this slow down my website?<\/h3><\/dt>\n<dd><p>The widget loads asynchronously from the HandyPal CDN. Performance depends on your site, network, and configuration.<\/p><\/dd>\n<dt id=\"is%20handypal%20wcag%202.1%20compliant%3F\"><h3>Is HandyPal WCAG 2.1 compliant?<\/h3><\/dt>\n<dd><p>HandyPal provides visitor accessibility tools. Installing a widget does not guarantee WCAG conformance or legal compliance. Audit your content and fix accessibility issues in your site code.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>The plugin includes JavaScript exclusions for WP Rocket, LiteSpeed Cache, and Autoptimize. Test your caching setup after installation.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20on%20multiple%20sites%3F\"><h3>Can I use this on multiple sites?<\/h3><\/dt>\n<dd><p>Yes! Depending on your plan, you can use HandyPal on 1-20+ websites. Each WordPress installation will automatically register as a site on your account.<\/p><\/dd>\n<dt id=\"what%20if%20i%20already%20have%20another%20accessibility%20plugin%3F\"><h3>What if I already have another accessibility plugin?<\/h3><\/dt>\n<dd><p>HandyPal will detect other accessibility plugins and display a warning. We recommend using only one accessibility widget to avoid conflicts.<\/p><\/dd>\n<dt id=\"how%20do%20i%20customize%20the%20widget%20appearance%3F\"><h3>How do I customize the widget appearance?<\/h3><\/dt>\n<dd><p>Widget customization (position, colors, icons, button text) is managed from your HandyPal dashboard. Go to your website's Customize page at handypal.net\/dashboard to adjust the appearance.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20subscription%20expires%3F\"><h3>What happens if my subscription expires?<\/h3><\/dt>\n<dd><p>The widget will stop appearing on your site. Your settings are preserved, so if you resubscribe, the widget will work again automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Refresh clean, visible dashboards every 15 seconds without replacing unsaved edits.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Share widget visibility and page-path rules with the HandyPal dashboard.<\/li>\n<li>Retire local visibility overrides after an explicit import\/keep choice when needed.<\/li>\n<li>Refresh shared settings when returning to either dashboard, preserving unsaved edits.<\/li>\n<li>Save only changed appearance fields so unrelated settings from the other dashboard are preserved.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Customize widget color, position, icon, and size directly in Settings &gt; HandyPal.<\/li>\n<li>Control automatic accessibility fixes in grouped WordPress dashboard controls.<\/li>\n<li>Keep appearance and fixes synchronized with your HandyPal website settings.<\/li>\n<li>Private account tokens stay server-side; site ownership and active subscriptions are verified on every request.<\/li>\n<li>Tested on WordPress 7.1.3 and PHP 8.3, with PHP 7.4 compatibility regression coverage.<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>Fixed: Replacing or clearing an account token disconnects the previous website.<\/li>\n<li>Fixed: Validation and fallback caches are bound to the token; fallback expires after 24 hours.<\/li>\n<li>Improved: Repeatable WordPress.org and direct-download packaging with consistent release metadata.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Fixed: Removed directory assets (banners, icons, screenshots) from plugin package<\/li>\n<li>Fixed: Removed inline script\/style tags, using wp_enqueue exclusively<\/li>\n<li>Fixed: Renamed main plugin file to follow plugin-slug.php convention<\/li>\n<li>Fixed: Removed discouraged load_plugin_textdomain() call<\/li>\n<li>Fixed: Proper input sanitization for nonce verification<\/li>\n<li>Removed: Custom auto-update filter in favor of WordPress native auto-updates<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Improved: Widget assets now loaded via wp_enqueue_style and wp_enqueue_script for better compatibility<\/li>\n<li>Improved: Proper output escaping throughout admin interface<\/li>\n<li>Improved: WordPress.org plugin guidelines compliance<\/li>\n<li>Fixed: Prefixed global variables in uninstall routine<\/li>\n<li>Removed: Debug logging from production code<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Improved: New 2-column layout for settings page - easier to navigate and less scrolling<\/li>\n<li>Improved: Cleaner sidebar with connection status, updates, and quick links<\/li>\n<li>Improved: More compact auto-update toggle design<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added: Auto-update toggle - keep your plugin automatically updated with the latest features and security fixes<\/li>\n<li>Added: Auto-updates enabled by default for new installations<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added: Live widget preview with actual dashboard styling<\/li>\n<li>Security: Added nonce verification for cache clear operations<\/li>\n<li>Security: Added environment check for SSL bypass in dev mode<\/li>\n<li>Security: Improved escaping of dynamic content<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Added: Widget preview in admin settings<\/li>\n<li>Added: Page exclusion feature - hide widget on specific pages<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added: HandyPal shield logo on plugin settings page<\/li>\n<li>Fixed: Icon handling in update info<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added: Check for updates section in plugin settings with one-click update<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Improved: Reduced update cache time and added force refresh support<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Improved: Customize link now goes directly to website's customize page<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: Helpful message directing users to HandyPal Dashboard for widget customization<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Removed: Documentation link from settings<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed: Position setting from plugin (now syncs from HandyPal dashboard)<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: Widget CSS now loads correctly<\/li>\n<li>Added: Automatic update notifications<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Account token authentication<\/li>\n<li>Automatic website registration<\/li>\n<li>Caching plugin compatibility<\/li>\n<li>Conflict detection with other accessibility plugins<\/li>\n<li>24-hour fallback caching for API issues<\/li>\n<\/ul>","raw_excerpt":"Add visitor-controlled accessibility tools to your WordPress site. Visitor-controlled text, contrast, reading, and navigation tools.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272557"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rgenzon"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272557"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272557"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272557"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272557"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272557"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}