{"id":272748,"date":"2026-01-26T12:53:59","date_gmt":"2026-01-26T12:53:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/typo-hunter\/"},"modified":"2026-03-24T04:48:10","modified_gmt":"2026-03-24T04:48:10","slug":"typo-hunter","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/typo-hunter\/","author":9532416,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.4.0","stable_tag":"trunk","tested":"6.9.4","requires":"5.0","requires_php":"8.1","requires_plugins":null,"header_name":"Typo Hunter","header_author":"Matt Biscay","header_description":"Turn your readers into proofreaders - crowdsource spelling and typo corrections.","assets_banners_color":"9fc6d8","last_updated":"2026-03-24 04:48:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.skyminds.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":243,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.3.0":"<p>Fixes &quot;Report a typo&quot; link appearing in WooCommerce emails. Adds customizable link text setting (free). Cleans up inconsistent translation strings.<\/p>","1.2.0":"<p>Security hardening release. Comprehensive re-audit with full output escaping, input sanitization, SRI for CDN assets, i18n support, and jQuery removal from frontend. Recommended update for all users.<\/p>","1.1.0":"<p>\ud83c\udf89 Major update! Pro version now available with Analytics Dashboard, Email Notifications, and Export features. Free version includes performance improvements and VIP compliance. Fully backward compatible.<\/p>","1.0.1":"<p>Minor improvements to output escaping and uninstall cleanup.<\/p>","1.0.0":"<p>Welcome to Typo Hunter! Turn your readers into proofreaders with this gamified typo reporting tool.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3447098,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3447098,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3447098,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Sleek modal form with selected text pre-filled","2":"Admin dashboard - clean, sortable typo reports","3":"Simple settings page - enable features in seconds","4":"Unobtrusive report link at post footer"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[26478,8223,1843,5540,27569],"plugin_category":[],"plugin_contributors":[81304],"plugin_business_model":[],"class_list":["post-272748","plugin","type-plugin","status-publish","hentry","plugin_tags-corrections","plugin_tags-crowdsource","plugin_tags-proofreading","plugin_tags-spelling","plugin_tags-typo","plugin_contributors-skyminds","plugin_committers-skyminds"],"banners":{"banner":"https:\/\/ps.w.org\/typo-hunter\/assets\/banner-772x250.jpg?rev=3447098","banner_2x":"https:\/\/ps.w.org\/typo-hunter\/assets\/banner-1544x500.jpg?rev=3447098","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/typo-hunter\/assets\/icon.svg?rev=3447098","icon":"https:\/\/ps.w.org\/typo-hunter\/assets\/icon.svg?rev=3447098","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Typo Hunter transforms your readers into active contributors by gamifying the proofreading process. Let your audience help you maintain professional, error-free content while building community engagement.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>\ud83c\udfaf Gamified Experience<\/strong> - Turn typo hunting into an engaging activity for your readers<\/li>\n<li><strong>\u26a1 Quick Reporting<\/strong> - Keyboard shortcut (Ctrl\/Cmd + Enter) for instant submissions<\/li>\n<li><strong>\ud83d\udee1\ufe0f Spam Protection<\/strong> - Rate limiting (5 reports\/hour) and duplicate detection<\/li>\n<li><strong>\ud83d\udcca Admin Dashboard<\/strong> - Clean, sortable table to manage all typo reports<\/li>\n<li><strong>\ud83d\ude80 Performance First<\/strong> - Assets only load where needed, optimized for PHP 8.3+<\/li>\n<li><strong>\ud83d\udd12 Enterprise Security<\/strong> - SQL injection protection, input validation, nonce verification<\/li>\n<li><strong>\ud83d\udcbe Smart Storage<\/strong> - Optional database logging with indexed queries<\/li>\n<li><strong>\ud83c\udfa8 Modern UI<\/strong> - Native HTML dialog with beautiful, responsive design<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Reader spots a typo on your site<\/li>\n<li>Selects the incorrect text<\/li>\n<li>Presses Ctrl\/Cmd + Enter (or clicks footer link)<\/li>\n<li>Submits correction in sleek modal form<\/li>\n<li>You review and fix in the admin dashboard<\/li>\n<li>Content quality improves continuously!<\/li>\n<\/ol>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>\ud83d\udcf0 Blogs &amp; News Sites<\/strong> - Crowdsource proofreading at scale<\/li>\n<li><strong>\ud83d\udcda Documentation Sites<\/strong> - Community-driven accuracy improvements<\/li>\n<li><strong>\ud83c\udf93 Educational Platforms<\/strong> - Maintain high-quality learning content<\/li>\n<li><strong>\ud83d\uded2 E-commerce Stores<\/strong> - Professional product descriptions<\/li>\n<li><strong>\ud83c\udfe2 Corporate Websites<\/strong> - Brand reputation through polished content<\/li>\n<li><strong>\ud83d\udcd6 Publishing Platforms<\/strong> - Engage readers as quality contributors<\/li>\n<\/ul>\n\n<h4>Security &amp; Privacy<\/h4>\n\n<ul>\n<li>\u2705 Rate limiting prevents abuse (5 reports\/hour per IP)<\/li>\n<li>\u2705 IP addresses hashed for privacy compliance<\/li>\n<li>\u2705 All inputs sanitized and validated<\/li>\n<li>\u2705 SQL injection protection with prepared statements<\/li>\n<li>\u2705 Nonce verification for all AJAX requests<\/li>\n<li>\u2705 GDPR-friendly (no personal data stored)<\/li>\n<\/ul>\n\n<h3>Technical Details<\/h3>\n\n<h4>Database Schema<\/h4>\n\n<p>Custom table: <code>typohunter_reports<\/code>\n* <code>id<\/code> - Unique report identifier (bigint, primary key)\n* <code>post_id<\/code> - Associated WordPress post ID (bigint, indexed)\n* <code>text<\/code> - Incorrect text (varchar 255)\n* <code>suggestion<\/code> - Suggested correction (varchar 255)\n* <code>url<\/code> - Page URL (varchar 500)\n* <code>timestamp<\/code> - Submission time (datetime, indexed)<\/p>\n\n<p>Optimized with indexes on <code>post_id<\/code> and <code>timestamp<\/code> for fast queries.<\/p>\n\n<h4>Security Features<\/h4>\n\n<ul>\n<li>\ud83d\udd12 SQL injection protection (<code>$wpdb-&gt;prepare()<\/code> with placeholders)<\/li>\n<li>\u2705 Nonce verification for all AJAX requests<\/li>\n<li>\ud83d\udee1\ufe0f Rate limiting via WordPress transients<\/li>\n<li>\ud83e\uddf9 Input sanitization (<code>sanitize_text_field()<\/code>, <code>esc_url_raw()<\/code>)<\/li>\n<li>\ud83d\udd0d Duplicate detection (5-minute window)<\/li>\n<li>\u2713 Post validation (ensures posts exist)<\/li>\n<li>\ud83d\udd10 Secure IP detection with fallback<\/li>\n<\/ul>\n\n<h4>Performance Optimizations<\/h4>\n\n<ul>\n<li>\u26a1 Assets only load on single posts\/pages (conditional loading)<\/li>\n<li>\ud83d\udcbe Options cached in class property (reduces DB calls)<\/li>\n<li>\ud83d\udcca Database indexes on <code>post_id<\/code> and <code>timestamp<\/code><\/li>\n<li>\ud83c\udfaf Minimal JavaScript footprint (vanilla JS, no jQuery)<\/li>\n<li>\ud83d\ude80 PHP 8.3+ features (typed properties, readonly, match expressions)<\/li>\n<li>\ud83d\udd25 First-class callable syntax for hooks<\/li>\n<li>\u26a1 Null coalescing operators for cleaner code<\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>For support, feature requests, or bug reports:\n\ud83d\udc1b GitHub: https:\/\/github.com\/skyminds\/typo-hunter\n\ud83d\udcac Support Forum: WordPress.org support tab<\/p>\n\n<h3>Roadmap<\/h3>\n\n<p><strong>Available in Pro Version (v1.1.0+):<\/strong>\n* \ud83d\udcca Analytics dashboard with stats and 30-day trend charts\n* \ud83d\udce7 Email notifications (instant, daily digest, weekly digest)\n* \ud83d\udce4 Export reports (CSV\/PDF with filtering)\n* \u26a1 Enhanced rate limiting (30 reports\/hour vs 5\/hour)\n* \ud83c\udfa8 Modern tabbed admin interface<\/p>\n\n<p><strong>Coming in Future Updates:<\/strong>\n* \ud83e\udd16 AI-powered correction suggestions\n* \ud83d\udc65 Team collaboration features\n* \ud83c\udfa8 Custom branding options\n* \ud83d\udd0c Grammarly API integration\n* \ud83c\udf0d Multi-language improvements<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Developed with \u2764\ufe0f by Matt Biscay\n\ud83c\udf10 https:\/\/mattbiscay.com\n\ud83d\udc19 https:\/\/github.com\/skyminds<\/p>\n\n<p><strong>Like Typo Hunter?<\/strong> Please rate it \u2b50\u2b50\u2b50\u2b50\u2b50 on WordPress.org!<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New<\/li>\n<li>Search for \"Typo Hunter\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\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 panel<\/li>\n<li>Navigate 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<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Go to Settings &gt; Typo Hunter<\/li>\n<li>Enable \"Text Highlighting\" for keyboard shortcut (Ctrl\/Cmd+Enter)<\/li>\n<li>Enable \"Database Logging\" to store reports<\/li>\n<li>Save and start hunting typos!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20visitors%20report%20typos%3F\"><h3>How do visitors report typos?<\/h3><\/dt>\n<dd><p>Two easy methods:\n1. Click the \"Report a typo\" link at the bottom of posts\n2. Select text and press Ctrl+Enter (Cmd+Enter on Mac) - fastest way!<\/p><\/dd>\n<dt id=\"where%20can%20i%20view%20typo%20reports%3F\"><h3>Where can I view typo reports?<\/h3><\/dt>\n<dd><p>Go to the WordPress admin panel and click \"Typo Hunter\" in the sidebar menu. You'll see all reports in a clean, sortable table.<\/p><\/dd>\n<dt id=\"can%20i%20prevent%20spam%20submissions%3F\"><h3>Can I prevent spam submissions?<\/h3><\/dt>\n<dd><p>Yes! The plugin includes built-in rate limiting (5 reports per hour per IP) and duplicate detection to prevent spam.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20all%20themes%3F\"><h3>Does this work with all themes?<\/h3><\/dt>\n<dd><p>Absolutely! Typo Hunter works with any WordPress theme. The report link is automatically added to single posts and pages.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>Not at all! Assets only load on single posts\/pages. Built with PHP 8.3+ optimizations, typed properties, and indexed database queries for maximum performance.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20look%3F\"><h3>Can I customize the look?<\/h3><\/dt>\n<dd><p>Yes! Add custom CSS to override default styles. All elements use standard CSS classes (<code>.typohunter-*<\/code>) for easy customization.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin doesn't collect personal information. IP addresses are hashed for rate limiting purposes only and are not stored permanently.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes, the plugin is fully compatible with caching plugins as it uses AJAX for form submissions.<\/p><\/dd>\n<dt id=\"can%20i%20export%20the%20reports%3F\"><h3>Can I export the reports?<\/h3><\/dt>\n<dd><p>Currently, reports are stored in the database and can be viewed in the admin panel. Export functionality may be added in future versions.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20old%20reports%3F\"><h3>What happens to old reports?<\/h3><\/dt>\n<dd><p>Reports are stored indefinitely. You can manually delete them from the admin panel. An auto-cleanup feature may be added in future versions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0 - March 2026<\/h4>\n\n<ul>\n<li>\ud83d\udcca <strong>Free Analytics Dashboard<\/strong> - Free users now see basic stats (Total, Today, This Week, This Month) on the Analytics tab instead of a locked screen<\/li>\n<li>\ud83d\uddbc\ufe0f <strong>SVG Icon Fix<\/strong> - Added viewBox attribute to plugin SVG icons so they scale correctly on the Freemius pricing page<\/li>\n<li>\ud83c\udfa8 <strong>Modern Modal Redesign<\/strong> - Glassmorphism backdrop, slide-up entrance animation, refined typography, gradient submit button with hover lift, modern focus rings, and polished inline close button<\/li>\n<li>\ud83d\udc1b <strong>Theme Compatibility<\/strong> - Fixed \"Report a typo\" link not appearing on some themes by replacing timing-dependent wp_script_is guard with did_action('wp') check<\/li>\n<\/ul>\n\n<h4>1.3.0 - March 2026<\/h4>\n\n<ul>\n<li>\ud83d\uded2 <strong>WooCommerce Compatibility<\/strong> - Fixed \"Report a typo\" link appearing in WooCommerce emails by guarding against non-frontend contexts<\/li>\n<li>\u270f\ufe0f <strong>Custom Link Text<\/strong> - New free setting to customize the \"Report a typo\" link text shown to visitors<\/li>\n<li>\ud83c\udf10 <strong>String Consistency<\/strong> - Unified all link text strings to \"Report a typo\" (removed inconsistent \"Report a spelling mistake\")<\/li>\n<li>\ud83d\udcdd <strong>Translation Cleanup<\/strong> - Removed stale translation entries from .pot and .po files<\/li>\n<li>\ud83d\ude80 <strong>Zero-Dependency Chart<\/strong> - Replaced Chart.js CDN (65 KB) with lightweight inline SVG chart (~80 lines of vanilla JS)<\/li>\n<\/ul>\n\n<h4>1.2.0 - February 2026<\/h4>\n\n<ul>\n<li>\ud83d\udd12 <strong>Security Hardening<\/strong> - Comprehensive security re-audit with all findings resolved<\/li>\n<li>\ud83d\udee1\ufe0f <strong>XSS Prevention<\/strong> - Escaped all dynamic output in admin templates (esc_html, esc_url, esc_attr)<\/li>\n<li>\ud83d\udd10 <strong>Input Sanitization<\/strong> - Added wp_unslash() consistently before all sanitization calls<\/li>\n<li>\u2705 <strong>Allowlist Validation<\/strong> - Email frequency setting validated against strict allowlist<\/li>\n<li>\ud83c\udf10 <strong>Internationalization<\/strong> - Full i18n support with wp_localize_script for all frontend strings<\/li>\n<li>\ud83d\udcdd <strong>Translation Ready<\/strong> - Added .pot file and French (fr_FR) translation<\/li>\n<li>\ud83d\udee1\ufe0f <strong>SRI Protection<\/strong> - Subresource Integrity hash for Chart.js CDN to prevent supply-chain attacks<\/li>\n<li>\u26a1 <strong>jQuery Removed<\/strong> - Frontend report.js now uses native Fetch API (zero jQuery dependency)<\/li>\n<li>\u2328\ufe0f <strong>Accessibility<\/strong> - Escape key closes the report modal<\/li>\n<li>\ud83d\udd12 <strong>Directory Protection<\/strong> - Added index.php silence files to all plugin directories<\/li>\n<li>\ud83d\udcc4 <strong>CSV Export Fix<\/strong> - Quoted filename in Content-Disposition header per RFC 6266<\/li>\n<li>\ud83d\udc1b <strong>JS Guard<\/strong> - Protected premium-only JS (email test, chart rendering) from ReferenceError on free version<\/li>\n<li>\ud83e\uddf9 <strong>Code Quality<\/strong> - Consistent escaping across admin interface, email templates, and PDF export<\/li>\n<\/ul>\n\n<h4>1.1.0 - February 2026<\/h4>\n\n<ul>\n<li>\ud83c\udf89 <strong>NEW PRO VERSION<\/strong>: Premium features now available!<\/li>\n<li>\ud83d\udcca <strong>Analytics Dashboard<\/strong> - View comprehensive stats, 30-day trends, and most reported posts (Pro)<\/li>\n<li>\ud83d\udce7 <strong>Email Notifications<\/strong> - Instant, daily, and weekly digest options with configurable recipients (Pro)<\/li>\n<li>\ud83d\udce4 <strong>Export Features<\/strong> - Export reports to CSV or PDF with date\/post filtering (Pro)<\/li>\n<li>\ud83c\udfa8 <strong>Tabbed Admin Interface<\/strong> - Modern, organized admin experience with Analytics, Reports, Settings, and Email tabs<\/li>\n<li>\u26a1 <strong>Enhanced Rate Limiting<\/strong> - Pro users get 30 reports\/hour (vs 5\/hour for free)<\/li>\n<li>\ud83d\ude80 <strong>Performance Boost<\/strong> - Added 5-minute object caching for analytics and reports list<\/li>\n<li>\ud83d\udd12 <strong>Security Enhancement<\/strong> - Replaced md5() with wp_hash() for IP hashing<\/li>\n<li>\ud83c\udfe2 <strong>VIP Compliance<\/strong> - Fully WordPress VIP compliant (replaced file operations, optimized queries)<\/li>\n<li>\ud83d\udcbe <strong>Query Optimization<\/strong> - SELECT specific columns instead of SELECT *, added proper indexes<\/li>\n<li>\ud83d\udd10 <strong>Capability Checks<\/strong> - Added current_user_can() checks on all admin methods<\/li>\n<li>\ud83d\udc1b <strong>Bug Fix<\/strong>: Fixed admin notice display to prevent duplicates<\/li>\n<li>\ud83d\udcdd <strong>Code Quality<\/strong>: Improved error handling and logging throughout<\/li>\n<li>\ud83c\udf10 <strong>Freemius Integration<\/strong> - Seamless license management and updates<\/li>\n<\/ul>\n\n<h4>1.0.1 - January 2026<\/h4>\n\n<ul>\n<li>\u2728 <strong>Enhancement<\/strong>: Added proper output escaping with esc_attr() for checkbox values<\/li>\n<li>\ud83e\uddf9 <strong>Cleanup<\/strong>: Added uninstall.php to properly clean up database table and options on uninstall<\/li>\n<\/ul>\n\n<h4>1.0.0 - December 2025<\/h4>\n\n<ul>\n<li>\ud83c\udf89 Initial release of Typo Hunter<\/li>\n<li>\u26a1 Lightning-fast keyboard shortcut (Ctrl\/Cmd + Enter)<\/li>\n<li>\ud83c\udfa8 Beautiful native HTML dialog interface<\/li>\n<li>\ud83d\udcca Admin dashboard with sortable reports<\/li>\n<li>\ud83d\udee1\ufe0f Rate limiting (5 reports\/hour per IP)<\/li>\n<li>\ud83d\udd0d Duplicate detection (5-minute window)<\/li>\n<li>\ud83d\udcbe Optional database logging<\/li>\n<li>\ud83d\udd12 Enterprise-grade security (SQL injection protection)<\/li>\n<li>\ud83d\ude80 PHP 8.3+ optimizations (typed properties, match expressions)<\/li>\n<li>\u26a1 Performance-first (conditional asset loading, DB indexes)<\/li>\n<li>\ud83c\udfaf Gamified user experience<\/li>\n<\/ul>","raw_excerpt":"Turn your readers into proofreaders. Crowdsource spelling and typo corrections with a simple, gamified interface.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272748"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/skyminds"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272748"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272748"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272748"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272748"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272748"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}