[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fqKD_eJFWc0FJ90dvcjkbExY7gwEDefCiDMGMCoGP3Xw":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":36,"analysis":147,"fingerprints":550},"tablecrafter-wp-data-tables","TableCrafter – Data to Beautiful Tables","3.5.4","Fahad Murtaza","https:\u002F\u002Fprofiles.wordpress.org\u002Ffahdi\u002F","\u003Cp>\u003Cstrong>TableCrafter\u003C\u002Fstrong> is the most powerful WordPress data table plugin for displaying dynamic content from Google Sheets, external APIs, JSON files, and CSV data sources. Perfect for developers, agencies, and businesses who need to showcase real-time data without database bloat.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Ftastewp.org\u002Fplugins\u002Ftablecrafter-wp-data-tables\" rel=\"nofollow ugc\">Try Live Demo\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>📱 NEW: Mobile-First Excellence (v3.2.0)\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>🎯 MOBILE-FIRST RESPONSIVE DESIGN\u003C\u002Fstrong> – Complete mobile-first architecture with card-based layouts optimized for mobile devices. Seamlessly adapts from 320px mobile screens to 4K desktops with intelligent breakpoint system (≤768px mobile, 768-900px tablet, >900px desktop).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>👆 TOUCH GESTURE SYSTEM\u003C\u002Fstrong> – Intuitive swipe gestures for mobile card interactions. Right swipe to expand\u002Fcollapse, left swipe for quick actions, with visual feedback and haptic support on supported devices. The only WordPress table plugin with native touch gesture support.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>♿ WCAG 2.1 AA ACCESSIBILITY COMPLIANCE\u003C\u002Fstrong> – Full accessibility compliance with 44px minimum touch targets, semantic ARIA labels, screen reader optimization, high contrast support, and comprehensive keyboard navigation. Perfect for enterprises and government organizations requiring strict accessibility standards compliance.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>⚡ MOBILE PERFORMANCE OPTIMIZED\u003C\u002Fstrong> – 40%+ performance improvement on mobile devices with \u003C150ms touch response times. Reduced memory footprint and optimized rendering for smooth 60fps interactions on all mobile devices.\u003C\u002Fp>\n\u003Ch3>🚀 Why TableCrafter is the Best WordPress Table Plugin\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>🌍 UNIVERSAL WORDPRESS COMPATIBILITY\u003C\u002Fstrong> – TableCrafter works with EVERY single WordPress website ever created! Native Gutenberg block integration ensures perfect compatibility with all modern WordPress sites, while our powerful shortcode system supports every classic theme back to WordPress 3.0. Whether your client uses the latest block themes or a 10-year-old custom theme, TableCrafter just works.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎨 Professional Elementor Integration\u003C\u002Fstrong> – The ONLY table plugin with true live preview in Elementor editor! Design tables with real data, no guesswork. Perfect for agencies and professional designers working with clients.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Three Ways to Win\u003C\u002Fstrong> – Gutenberg Block for modern sites, Shortcodes for legacy themes, and Elementor Widget for design professionals. No other table plugin offers this level of flexibility. Your investment is future-proof regardless of how WordPress evolves.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Zero Database Impact\u003C\u002Fstrong> – Unlike other WordPress table plugins that store data in your database, TableCrafter fetches data directly from your sources, keeping your WordPress installation clean and fast.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>SEO-Optimized Tables\u003C\u002Fstrong> – Every table is rendered server-side with proper HTML structure, making all your data crawlable by Google, Bing, and other search engines for better rankings.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Lightning-Fast Performance\u003C\u002Fstrong> – Advanced caching with Stale-While-Revalidate (SWR) delivers sub-100ms load times while keeping data fresh.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Mobile-First Design\u003C\u002Fstrong> – Tables automatically transform into responsive card layouts on mobile devices, ensuring perfect user experience across all screen sizes.\u003C\u002Fp>\n\u003Ch3>🛠️ Key Features for WordPress Developers & Designers\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>🎯 Data Integration:\u003C\u002Fstrong> Connect to Google Sheets, REST APIs, JSON endpoints, or CSV files with zero coding\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🔄 Smart Auto-Refresh:\u003C\u002Fstrong> Live data updates with configurable intervals, smart interaction pausing, and visual indicators\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🌍 WORKS WITH EVERY WORDPRESS SITE:\u003C\u002Fstrong> Three powerful integration methods ensure 100% compatibility – Gutenberg Block (WordPress 5.0+), Universal Shortcodes (WordPress 3.0+), and Elementor Widget. No theme conflicts, no version incompatibilities, no exceptions!\u003C\u002Fli>\n\u003Cli>\u003Cstrong>⚡ Live Search & Sorting:\u003C\u002Fstrong> Real-time data filtering and multi-column sorting that works instantly across all integration methods – \u003Cstrong>Gutenberg Block\u003C\u002Fstrong>, \u003Cstrong>Shortcodes\u003C\u002Fstrong>, and \u003Cstrong>Elementor Widget\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>📱 Responsive Design:\u003C\u002Fstrong> Mobile-optimized card view with automatic reflow for small screens  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>🎨 Elementor Pro Integration:\u003C\u002Fstrong> WYSIWYG table design with live data preview directly in Elementor editor! No more preview\u002Fpublish cycles – see your actual data while designing. Includes visual controls for all features, responsive settings, and real-time configuration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🔧 Native Gutenberg Block:\u003C\u002Fstrong> Built for the modern WordPress editor with visual sidebar controls, live preview, and instant configuration. Perfect for WordPress 5.0+ sites and all block-based themes.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🛠️ Powerful Shortcode System:\u003C\u002Fstrong> Built-in visual generator in the admin dashboard works with ANY WordPress theme since 2010. Configure your table visually, preview real-time results, and copy the ready-to-use shortcode with one click. Perfect for classic themes, custom themes, and legacy WordPress sites.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>📄 Smart Pagination:\u003C\u002Fstrong> Client-side pagination for large datasets with customizable page sizes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🎨 Custom Styling:\u003C\u002Fstrong> CSS-friendly with variables and hooks for complete design control\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🔒 Security First:\u003C\u002Fstrong> Built-in SSRF protection and WordPress capability-based authorization\u003C\u002Fli>\n\u003Cli>\u003Cstrong>📊 Data Export:\u003C\u002Fstrong> CSV and clipboard export with respect for current filters\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🗂️ Column Management:\u003C\u002Fstrong> Show\u002Fhide specific columns with include\u002Fexclude parameters\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🔗 Auto-Linking:\u003C\u002Fstrong> Automatically converts URLs and email addresses to clickable links\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>💼 Powerful Use Cases Across Industries\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>🏦 Financial Services & FinTech\u003C\u002Fstrong>\u003Cbr \u002F>\n* Live cryptocurrency prices and trading data (CoinGecko, Binance, Alpha Vantage APIs)\u003Cbr \u002F>\n* Stock market performance, portfolio tracking, and investment analytics\u003Cbr \u002F>\n* Exchange rates, currency converters, and financial calculators\u003Cbr \u002F>\n* Banking transaction histories and account summaries\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🛒 E-Commerce & Retail\u003C\u002Fstrong>\u003Cbr \u002F>\n* Real-time inventory levels and product catalogs from external suppliers\u003Cbr \u002F>\n* Price comparison tables from multiple vendors and marketplaces\u003Cbr \u002F>\n* Customer order histories, shipping tracking, and return statuses\u003Cbr \u002F>\n* Dropshipping product feeds and affiliate marketing data\u003C\u002Fp>\n\u003Cp>\u003Cstrong>⚗️ Scientific & Research\u003C\u002Fstrong>\u003Cbr \u002F>\n* Laboratory data analysis, experiment results, and research findings\u003Cbr \u002F>\n* Clinical trial data, patient records, and medical research statistics\u003Cbr \u002F>\n* Environmental monitoring data (weather, air quality, sensor readings)\u003Cbr \u002F>\n* Academic publication databases and citation tracking\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🏢 Enterprise & SaaS\u003C\u002Fstrong>\u003Cbr \u002F>\n* Client portals with usage metrics, billing information, and analytics dashboards\u003Cbr \u002F>\n* Employee directories, organizational charts, and HR management systems\u003Cbr \u002F>\n* Project management data, task tracking, and team performance metrics\u003Cbr \u002F>\n* Customer support ticket systems and knowledge base integration\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🏘️ Real Estate & Property\u003C\u002Fstrong>\u003Cbr \u002F>\n* MLS property listings with live market data and pricing trends\u003Cbr \u002F>\n* Rental property management, tenant information, and lease tracking\u003Cbr \u002F>\n* Commercial real estate portfolios and investment property analysis\u003Cbr \u002F>\n* Mortgage calculators and financing option comparisons\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📺 Media & Publishing\u003C\u002Fstrong>\u003Cbr \u002F>\n* Live sports scores, player statistics, and league standings\u003Cbr \u002F>\n* Social media metrics, engagement analytics, and influencer data\u003Cbr \u002F>\n* News feeds, article databases, and content management systems\u003Cbr \u002F>\n* Event listings, conference schedules, and registration data\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎓 Education & Training\u003C\u002Fstrong>\u003Cbr \u002F>\n* Student grade books, attendance records, and academic progress tracking\u003Cbr \u002F>\n* Course catalogs, class schedules, and enrollment management\u003Cbr \u002F>\n* Educational resource databases and curriculum planning tools\u003Cbr \u002F>\n* Certification tracking and professional development records\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🚀 Startups & Agencies\u003C\u002Fstrong>\u003Cbr \u002F>\n* Client project portfolios, case studies, and testimonial databases\u003Cbr \u002F>\n* Freelancer marketplaces, service provider directories, and vendor listings\u003Cbr \u002F>\n* Marketing campaign data, lead tracking, and conversion analytics\u003Cbr \u002F>\n* Partnership networks and affiliate program management\u003C\u002Fp>\n\u003Ch3>🎯 SEO Benefits for Your WordPress Site\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Server-Side Rendering:\u003C\u002Fstrong> All table data is rendered in HTML, making it fully indexable by search engines\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Structured Data Ready:\u003C\u002Fstrong> Clean HTML table markup perfect for rich snippets and schema markup\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fast Loading:\u003C\u002Fstrong> Improved Core Web Vitals scores with optimized caching and performance\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Mobile-Friendly:\u003C\u002Fstrong> Google’s mobile-first indexing loves our responsive table design\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fresh Content:\u003C\u002Fstrong> Dynamic data keeps your pages updated without manual intervention\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>🔌 Developer-Friendly Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>WordPress Hooks:\u003C\u002Fstrong> Extensive filter and action hooks for customization\u003C\u002Fli>\n\u003Cli>\u003Cstrong>REST API Proxy:\u003C\u002Fstrong> Bypass CORS restrictions with our secure server-side proxy\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WP-CLI Support:\u003C\u002Fstrong> Command-line cache management and debugging tools\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcode API:\u003C\u002Fstrong> Flexible shortcode parameters for non-technical users\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debug Mode:\u003C\u002Fstrong> Comprehensive error reporting and troubleshooting tools\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch3>Visual Shortcode Builder (Recommended)\u003C\u002Fh3>\n\u003Cp>Go to the \u003Cstrong>TableCrafter\u003C\u002Fstrong> admin menu to use the interactive builder.\u003Cbr \u002F>\n1. Enter your JSON URL.\u003Cbr \u002F>\n2. Toggle settings (Search, Filter, Export).\u003Cbr \u002F>\n3. Click \u003Cstrong>Preview Table\u003C\u002Fstrong> to verify data.\u003Cbr \u002F>\n4. Copy the generated shortcode.\u003C\u002Fp>\n\u003Ch3>Manual Shortcode Parameters\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>[tablecrafter]\u003C\u002Fcode> shortcode is highly flexible:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Core Parameters:\u003C\u002Fstrong>\u003Cbr \u002F>\n*   \u003Ccode>source\u003C\u002Fcode>: (Required) The URL to your JSON API, CSV file, or \u003Cstrong>Google Sheet\u003C\u002Fstrong>.\u003Cbr \u002F>\n*   \u003Ccode>root\u003C\u002Fcode>: (Optional) Path to the data array in the JSON response (e.g., \u003Ccode>root=\"data.results\"\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>search\u003C\u002Fcode>: (Optional) Toggle the live search bar (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>filters\u003C\u002Fcode>: (Optional) Toggle column filters (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>per_page\u003C\u002Fcode>: (Optional) Number of rows to show per page (e.g., \u003Ccode>per_page=\"10\"\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>include\u003C\u002Fcode>: (Optional) Comma-separated list of keys you want to show.\u003Cbr \u002F>\n*   \u003Ccode>exclude\u003C\u002Fcode>: (Optional) Comma-separated list of keys you want to hide.\u003Cbr \u002F>\n*   \u003Ccode>export\u003C\u002Fcode>: (Optional) Enable CSV\u002Fclipboard export tools (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Smart Auto-Refresh Parameters:\u003C\u002Fstrong>\u003Cbr \u002F>\n*   \u003Ccode>auto_refresh\u003C\u002Fcode>: (Optional) Enable automatic data updates (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>refresh_interval\u003C\u002Fcode>: (Optional) How often to refresh in milliseconds (default: 300000 = 5 minutes).\u003Cbr \u002F>\n*   \u003Ccode>refresh_indicator\u003C\u002Fcode>: (Optional) Show visual refresh controls (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>, default: \u003Ccode>true\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>refresh_countdown\u003C\u002Fcode>: (Optional) Display countdown to next refresh (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>).\u003Cbr \u002F>\n*   \u003Ccode>refresh_last_updated\u003C\u002Fcode>: (Optional) Show “Updated X minutes ago” timestamp (\u003Ccode>true\u003C\u002Fcode> or \u003Ccode>false\u003C\u002Fcode>, default: \u003Ccode>true\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch3>Examples:\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>1. Live Search & Pagination\u003C\u002Fstrong>\u003Cbr \u002F>\nEnable interactive features for a large dataset:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"...\" search=\"true\" per_page=\"10\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>2. Specific Root Path\u003C\u002Fstrong>\u003Cbr \u002F>\nConnect to an API where results are nested:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"...\" root=\"items.list\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>3. Specific Columns (Curated View)\u003C\u002Fstrong>\u003Cbr \u002F>\nLimit data from heavy APIs:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"...\" include=\"name,price,symbol\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>4. Google Sheets Integration\u003C\u002Fstrong>\u003Cbr \u002F>\nDisplay data from a public Google Sheet (must be “Anyone with the link”):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"https:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002Fd\u002F1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\u002Fedit\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>5. Live Dashboard with Auto-Refresh\u003C\u002Fstrong>\u003Cbr \u002F>\nCreate a real-time dashboard that updates every 30 seconds:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"https:\u002F\u002Fapi.example.com\u002Flive-data.json\" auto_refresh=\"true\" refresh_interval=\"30000\" refresh_countdown=\"true\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>6. Financial Dashboard with Smart Pausing\u003C\u002Fstrong>\u003Cbr \u002F>\nDisplay live stock prices with user-friendly refresh controls:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[tablecrafter source=\"https:\u002F\u002Fapi.example.com\u002Fstocks.json\" auto_refresh=\"true\" refresh_interval=\"60000\" refresh_indicator=\"true\" refresh_last_updated=\"true\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>🚀 Upgrade to Pro: Gravity Tables\u003C\u002Fh3>\n\u003Cp>Unlock the full potential of your data with \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fcheckout.freemius.com\u002Fplugin\u002F20996\u002Fplan\u002F35031\u002F?trial=paid\" rel=\"nofollow ugc\">Advanced Data Tables for Gravity Forms\u003C\u002Fa>\u003C\u002Fstrong> — the ultimate solution for managing Gravity Forms entries.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why Upgrade?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>✏️ \u003Cstrong>Frontend Editing:\u003C\u002Fstrong> Let users update their own entries directly from the table.\u003C\u002Fli>\n\u003Cli>🛡️ \u003Cstrong>Role-Based Permissions:\u003C\u002Fstrong> Control exactly who can view, edit, or delete data.\u003C\u002Fli>\n\u003Cli>⚡ \u003Cstrong>Bulk Actions:\u003C\u002Fstrong> Delete, approve, or modify hundreds of entries in one click.\u003C\u002Fli>\n\u003Cli>🔍 \u003Cstrong>Advanced Filtering:\u003C\u002Fstrong> Logic-based filters, date ranges, and multi-select dropdowns.\u003C\u002Fli>\n\u003Cli>🎨 \u003Cstrong>Conditional Formatting:\u003C\u002Fstrong> Highlight rows or cells based on their values (e.g., “Status = Overdue”).\u003C\u002Fli>\n\u003Cli>📥 \u003Cstrong>Pro Export:\u003C\u002Fstrong> Export filtered views to Excel, CSV, or PDF.\u003C\u002Fli>\n\u003Cli>♾️ \u003Cstrong>Unlimited Freedom:\u003C\u002Fstrong> No limits on tables, columns, or rows.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Start your 10-day free trial today! You can cancel anytime before the trial ends to avoid being charged, and we’ll send you an email reminder 2 days before the trial ends.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>🛠️ Custom Customization\u003C\u002Fh3>\n\u003Cp>Need a specific feature, a custom API integration, or a unique table layout? Contact me at \u003Cstrong>\u003Ca href=\"mailto:info@fahdmurtaza.com\" rel=\"nofollow ugc\">info@fahdmurtaza.com\u003C\u002Fa>\u003C\u002Fstrong> if you need to customise the plugin in any way for a fee.\u003C\u002Fp>\n","Transform JSON APIs, Google Sheets & CSV into accessible WordPress tables. Mobile-first design with touch gestures and WCAG 2.1 compliance.",0,1043,100,2,"2026-02-11T20:02:00.000Z","6.7.5","5.0","8.0",[20,21,22,23,24],"accessibility","api","json","table","wcag","https:\u002F\u002Fgithub.com\u002FTableCrafter\u002Fwp-data-tables","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftablecrafter-wp-data-tables.3.5.4.zip",null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"fahdi",3,30,94,"2026-04-05T01:56:08.743Z",[37,62,85,106,128],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":57,"download_link":58,"security_score":59,"vuln_count":60,"unpatched_count":11,"last_vuln_date":61,"fetched_at":28},"pojo-accessibility","Ally – Web Accessibility & Usability","4.1.0","Elementor","https:\u002F\u002Fprofiles.wordpress.org\u002Felemntor\u002F","\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F-2ig5D348vo?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Ally (formerly One Click Accessibility) is a free, powerful, and user-friendly plugin that helps WordPress creators build more accessible websites with ease.\u003Cbr \u002F>\nIt simplifies accessibility with three essential tools:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Ally Assistant\u003C\u002Fstrong> – Scan your pages, detect accessibility violations, and follow guided steps to fix them. Make manual adjustments or apply AI-powered suggestions, and track your progress.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Usability widget\u003C\u002Fstrong> – Let visitors personalize their browsing experience with a floating accessibility menu. Features include font resizing, color contrast, image hiding, animation pausing, language selection, screen reader support, and more.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Accessibility statement generator\u003C\u002Fstrong> – Create a fully customized accessibility statement and publish it automatically on your site, helping meet WCAG and legal requirements.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>No expertise required\u003C\u002Fstrong> -just activate, configure, and start making your site more inclusive today.Built by Elementor. Designed for every WordPress site. Ally is web accessibility—simplified.\u003C\u002Fp>\n\u003Ch3>Why does web accessibility matter?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Who Needs It?\u003C\u002Fstrong> Every website owner—businesses, creators, and agencies.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Who is Responsible?\u003C\u002Fstrong> Website owners are legally and ethically responsible for accessibility. The web creator—who designs and builds the site—must implement and adjust accessibility features to ensure compliance with WCAG guidelines and provide an inclusive experience for all users.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Why Now?\u003C\u002Fstrong> Rising legal requirements (WCAG, EAA) and better user experience.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Why Should You Care?\u003C\u002Fstrong>  An accessible website isn’t just ethical; it’s good business. By prioritizing inclusivity, you improve user experience for everyone, boost your search engine rankings, and attract a wider audience.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>It’s the Law\u003C\u002Fh3>\n\u003Cp>As accessibility standards continue to evolve and become mandatory, it’s important to start making website adjustments to comply with fast-approaching global regulations. Among its other capabilities, this plugin lets you instantly generate your website’s Accessibility Statement, which is now mandatory in most locales.\u003C\u002Fp>\n\u003Cp>The Ally plugin is not a substitute for a thorough accessibility audit and is NOT intended to completely make your website legally compliant. However, with it, you’re one step closer to making your website inclusive to more visitors, including those with visual, auditory or cognitive challenges.\u003C\u002Fp>\n\u003Cp>Ensuring that your website complies with all applicable accessibility requirements is your responsibility. We recommend working with qualified accessibility professionals to help achieve full compliance.\u003C\u002Fp>\n\u003Ch3>Key Features & Benefits\u003C\u002Fh3>\n\u003Ch4>Ally Assistant\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Scan any URL on demand to detect accessibility gaps\u003C\u002Fli>\n\u003Cli>Launch directly from WordPress or Elementor\u003C\u002Fli>\n\u003Cli>Step-by-step guidance to fix issues\u003C\u002Fli>\n\u003Cli>AI-powered remediation suggestions\u003C\u002Fli>\n\u003Cli>Progress tracking via a visual dashboard\u003C\u002Fli>\n\u003Cli>No accessibility expertise required\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>Ally Assistant scans individual URLs for accessibility violations, categorizes them by type and severity, and provides actionable insights. You can apply manual fixes manually or use AI suggestions while tracking your progress over time.\u003Cbr \u002F>\nAlly Assistant helps you:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Detect missing alternative text\u003C\u002Fli>\n\u003Cli>Label dynamic content & ARIA landmarks\u003C\u002Fli>\n\u003Cli>Validate forms & flag input errors\u003C\u002Fli>\n\u003Cli>Ensure keyboard & assistive tech compatibility\u003C\u002Fli>\n\u003Cli>Identify accessibility violations in tables\u003C\u002Fli>\n\u003Cli>Repair incorrect page structure & navigation\u003C\u002Fli>\n\u003Cli>Flag color contrast & visual style violations (coming soon)\u003C\u002Fli>\n\u003Cli>And detect 180+ other common accessibility violations based on WCAG 2.1 AA\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Accessibility Statement Generator\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Auto-generate a complete  accessibility statement\u003C\u002Fli>\n\u003Cli>Customize and publish to a dedicated page\u003C\u002Fli>\n\u003Cli>Link it using the widget\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Usability Widget\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Offer visitors a customizable menu with features like:\u003C\u002Fli>\n\u003Cli>Contrast Modes (high, dark, light, negative)\u003C\u002Fli>\n\u003Cli>Font resizing & readable font toggle\u003C\u002Fli>\n\u003Cli>Pause animations & hide images\u003C\u002Fli>\n\u003Cli>Line height & text alignment options\u003C\u002Fli>\n\u003Cli>Keyboard navigation enhancements\u003C\u002Fli>\n\u003Cli>Underlined links & reading guide\u003C\u002Fli>\n\u003Cli>Skip to content \u002F sitemap viewer\u003C\u002Fli>\n\u003Cli>Language selector\u003C\u002Fli>\n\u003Cli>Skip to Main Content\u003C\u002Fli>\n\u003Cli>Restore defaults & widget toggle\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Premium widget features are also available within paid plans, including:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Screen reader compatibility improvements\u003C\u002Fli>\n\u003Cli>White labeling (remove Elementor branding)\u003C\u002Fli>\n\u003Cli>Language selector directly in the widget\u003C\u002Fli>\n\u003Cli>Usage analytics to gain actionable insights from visitor interactions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Widget customization options for web creators\u003C\u002Fh4>\n\u003Cp>Tailor the widget’s look and behavior with options like:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Show\u002Fhide widget icon on mobile or desktop\u003C\u002Fli>\n\u003Cli>Select icon type and size\u003C\u002Fli>\n\u003Cli>Choose colors for icon, header, and text\u003C\u002Fli>\n\u003Cli>Define icon position (corner selection)\u003C\u002Fli>\n\u003Cli>Add\u002Fedit sitemap URL\u003C\u002Fli>\n\u003Cli>Enable\u002Fdisable features per device or user role\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Get Started Today\u003C\u002Fh3>\n\u003Ch3>Make your site more accessible with Ally!\u003C\u002Fh3>\n\u003Cp>Need help? Visit our \u003Ca href=\"https:\u002F\u002Fgo.elementor.com\u002Facc-wp-repo-learn-more\" rel=\"nofollow ugc\">help center\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgo.elementor.com\u002Fwp-repo-wp-dash-sm-contact-us\u002F\" rel=\"nofollow ugc\">contact Supoprt\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>This plugin requires a connection to an active Elementor account in order to identify the user and provide the user with the purchased service. This connection is initiated manually by the user via the plugin’s settings panel. Learn more about our \u003Ca href=\"https:\u002F\u002Fgo.elementor.com\u002Facc-wp-repo-term-and-conditions\" rel=\"nofollow ugc\">terms and conditions\u003C\u002Fa>. This plugin uses a 3rd party service operated by Elementor.\u003C\u002Fp>\n\u003Cp>More accessibility features are on the way, so stay tuned!\u003C\u002Fp>\n\u003Ch3>Related Plugins\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsite-mailer\u002F\" rel=\"ugc\">Site Mailer\u003C\u002Fa>: Manage transactional emails with ease with Site Mailer. High deliverability, detailed logs and statistics, and no SMTP plugins needed.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fimage-optimization\u002F\" rel=\"ugc\">Image Optimizer\u003C\u002Fa>: Compress and optimize your images, giving you leaner, faster websites. Automatically optimize any new image you upload or run a bulk optimization process for existing uploads.\u003C\u002Fli>\n\u003C\u002Ful>\n","Ally: Make your site more inclusive by scanning for accessibility violations, fixing them easily, and adding a usability widget and accessibility stat &hellip;",500000,4256750,58,151,"2026-02-23T10:06:00.000Z","6.9.4","6.6","7.4",[54,20,55,24,56],"a11y","accessibility-statement","web-accessibility","https:\u002F\u002Felementor.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpojo-accessibility.4.1.0.zip",93,4,"2026-03-10 16:11:03",{"slug":63,"name":64,"version":65,"author":66,"author_profile":67,"description":68,"short_description":69,"active_installs":70,"downloaded":71,"rating":72,"num_ratings":73,"last_updated":74,"tested_up_to":75,"requires_at_least":76,"requires_php":77,"tags":78,"homepage":82,"download_link":83,"security_score":84,"vuln_count":11,"unpatched_count":11,"last_vuln_date":27,"fetched_at":28},"disable-json-api","Disable REST API","1.8","Dave McHale","https:\u002F\u002Fprofiles.wordpress.org\u002Fdmchale\u002F","\u003Cp>The most comprehensive plugin for controlling access to the WordPress REST API!\u003C\u002Fp>\n\u003Cp>Works as a “set it and forget it” install. Just upload and activate, and the entire REST API will be inaccessible to your general site visitors.\u003C\u002Fp>\n\u003Cp>But if you do need to grant access to some endpoints, you can do that too. Go to the Settings page and you can quickly whitelist individual endpoints (or entire branches of endpoints) in the REST API.\u003C\u002Fp>\n\u003Cp>You can even do this on a per-user-role basis, so your unauthenticated users have one set of rules while WooCommerce customers have another while Subscribers and Editors and Admins all have their own. NOTE: Out of the box, all defined user roles will still be granted full access to the REST API until you choose to manage those settings.\u003C\u002Fp>\n\u003Cp>For most versions of WordPress, this plugin will return an authentication error if a user is not allowed to access an endpoint. For legacy support, WordPress 4.4, 4.5, and 4.6 use the provided \u003Ccode>rest_enabled\u003C\u002Fcode> filter to disable the entire REST API.\u003C\u002Fp>\n","Disable the use of the REST API on your website to site users. Now with User Role support!",90000,753897,96,38,"2023-09-14T00:26:00.000Z","6.3.8","4.9","5.6",[79,21,22,80,81],"admin","rest","rest-api","http:\u002F\u002Fwww.binarytemplar.com\u002Fdisable-json-api","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdisable-json-api.zip",85,{"slug":86,"name":87,"version":88,"author":89,"author_profile":90,"description":91,"short_description":92,"active_installs":93,"downloaded":94,"rating":95,"num_ratings":96,"last_updated":97,"tested_up_to":50,"requires_at_least":98,"requires_php":99,"tags":100,"homepage":104,"download_link":105,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":27,"fetched_at":28},"userway-accessibility-widget","Accessibility by UserWay","2.6.6","UserWay","https:\u002F\u002Fprofiles.wordpress.org\u002Fuserwayorg\u002F","\u003Cp>Web accessibility can seem complex and overwhelming if you don’t know where to start.\u003C\u002Fp>\n\u003Cp>Let us make it easier, and, to coin a phrase, more accessible for everyone. UserWay’s Accessibility Widget creates a simpler and more accessible browsing experience for your users while increasing compliance with WCAG 2.1, ATAG 2.0, European EN 301 549, ADA, & Section 508 requirements.\u003C\u002Fp>\n\u003Cp>UserWay’s Accessibility Widget will strengthen any weak areas that could cause accessibility issues on your site. We are proud to say that a significant number of websites are more accessible today thanks to UserWay.\u003C\u002Fp>\n\u003Cp>UserWay’s Accessibility Widget makes smart modifications to elements on your site that are identified as being non-compliant, that may prevent keyboard-only navigation, or are in violation of ADA regulations.\u003C\u002Fp>\n\u003Cp>Install UserWay’s Accessibility Widget today.\u003Cbr \u002F>\nAfter installing UserWay’s Accessibility Widget, you will receive login instructions to the widget via email.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ADA & WCAG 2.1 Compliance\u003C\u002Fstrong>\u003Cbr \u002F>\nUserWay’s best-in-class accessibility solutions move your site towards ADA and WCAG 2.1 compliance.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Shield Against Lawsuits\u003C\u002Fstrong>\u003Cbr \u002F>\nIncreasing your accessibility provides real, sustainable improvement for all users, and protects you from accessibility-related lawsuits.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Improve SEO, Boost Traffic\u003C\u002Fstrong>\u003Cbr \u002F>\nMake your commitment clear: a more inclusive site for everyone expands your demographic and boosts your SEO.\u003C\u002Fp>\n","UserWay’s Accessibility Widget creates a simpler and more accessible browsing experience for your users.",80000,917619,80,56,"2025-12-08T10:38:00.000Z","4.7","",[20,101,102,103,24],"ada","eaa-compliance","section-508","https:\u002F\u002Fuserway.org","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fuserway-accessibility-widget.2.6.6.zip",{"slug":107,"name":108,"version":109,"author":110,"author_profile":111,"description":112,"short_description":113,"active_installs":114,"downloaded":115,"rating":116,"num_ratings":117,"last_updated":118,"tested_up_to":50,"requires_at_least":119,"requires_php":120,"tags":121,"homepage":126,"download_link":127,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":27,"fetched_at":28},"jwt-authentication-for-wp-rest-api","JWT Authentication for WP REST API","1.5.0","tmeister","https:\u002F\u002Fprofiles.wordpress.org\u002Ftmeister\u002F","\u003Cp>This plugin seamlessly extends the WP REST API, enabling robust and secure authentication using JSON Web Tokens (JWT). It provides a straightforward way to authenticate users via the REST API, returning a standard JWT upon successful login.\u003C\u002Fp>\n\u003Ch3>Key features of this free version include:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Standard JWT Authentication:\u003C\u002Fstrong> Implements the industry-standard \u003Ca href=\"https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc7519\" rel=\"nofollow ugc\">RFC 7519\u003C\u002Fa> for secure claims representation.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Simple Endpoints:\u003C\u002Fstrong> Offers clear \u003Ccode>\u002Ftoken\u003C\u002Fcode> and \u003Ccode>\u002Ftoken\u002Fvalidate\u003C\u002Fcode> endpoints for generating and validating tokens.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configurable Secret Key:\u003C\u002Fstrong> Define your unique secret key via \u003Ccode>wp-config.php\u003C\u002Fcode> for secure token signing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Optional CORS Support:\u003C\u002Fstrong> Easily enable Cross-Origin Resource Sharing support via a \u003Ccode>wp-config.php\u003C\u002Fcode> constant.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer Hooks:\u003C\u002Fstrong> Provides filters (\u003Ccode>jwt_auth_expire\u003C\u002Fcode>, \u003Ccode>jwt_auth_token_before_sign\u003C\u002Fcode>, etc.) for customizing token behavior.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>JSON Web Tokens are an open, industry standard method for representing claims securely between two parties.\u003C\u002Fp>\n\u003Cp>For users requiring more advanced capabilities such as multiple signing algorithms (RS256, ES256), token refresh\u002Frevocation, UI-based configuration, or priority support, consider checking out \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=description_link_soft\" rel=\"nofollow ugc\">JWT Authentication PRO\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Support and Requests:\u003C\u002Fstrong> Please use \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTmeister\u002Fwp-api-jwt-auth\u002Fissues\" rel=\"nofollow ugc\">GitHub Issues\u003C\u002Fa>. For priority support, consider upgrading to \u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=description_support_link\" rel=\"nofollow ugc\">PRO\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>REQUIREMENTS\u003C\u002Fh3>\n\u003Ch4>WP REST API V2\u003C\u002Fh4>\n\u003Cp>This plugin was conceived to extend the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWP-API\u002FWP-API\" rel=\"nofollow ugc\">WP REST API V2\u003C\u002Fa> plugin features and, of course, was built on top of it.\u003C\u002Fp>\n\u003Cp>So, to use the \u003Cstrong>wp-api-jwt-auth\u003C\u002Fstrong> you need to install and activate \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWP-API\u002FWP-API\" rel=\"nofollow ugc\">WP REST API\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>PHP\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Minimum PHP version: 7.4.0\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>PHP HTTP Authorization Header Enable\u003C\u002Fh3>\n\u003Cp>Most shared hosting providers have disabled the \u003Cstrong>HTTP Authorization Header\u003C\u002Fstrong> by default.\u003C\u002Fp>\n\u003Cp>To enable this option you’ll need to edit your \u003Cstrong>.htaccess\u003C\u002Fstrong> file by adding the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>RewriteEngine on\nRewriteCond %{HTTP:Authorization} ^(.*)\nRewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>WPENGINE\u003C\u002Fh4>\n\u003Cp>For WPEngine hosting, you’ll need to edit your \u003Cstrong>.htaccess\u003C\u002Fstrong> file by adding the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>SetEnvIf Authorization \"(.*)\" HTTP_AUTHORIZATION=$1\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>See https:\u002F\u002Fgithub.com\u002FTmeister\u002Fwp-api-jwt-auth\u002Fissues\u002F1 for more details.\u003C\u002Fp>\n\u003Ch3>CONFIGURATION\u003C\u002Fh3>\n\u003Ch3>Configure the Secret Key\u003C\u002Fh3>\n\u003Cp>The JWT needs a \u003Cstrong>secret key\u003C\u002Fstrong> to sign the token. This \u003Cstrong>secret key\u003C\u002Fstrong> must be unique and never revealed.\u003C\u002Fp>\n\u003Cp>To add the \u003Cstrong>secret key\u003C\u002Fstrong>, edit your wp-config.php file and add a new constant called \u003Cstrong>JWT_AUTH_SECRET_KEY\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can generate a secure key from: https:\u002F\u002Fapi.wordpress.org\u002Fsecret-key\u002F1.1\u002Fsalt\u002F\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Looking for easier configuration?\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=config_secret_key_link\" rel=\"nofollow ugc\">JWT Authentication PRO\u003C\u002Fa> allows you to manage all settings through a simple admin UI.\u003C\u002Fp>\n\u003Ch3>Configure CORS Support\u003C\u002Fh3>\n\u003Cp>The \u003Cstrong>wp-api-jwt-auth\u003C\u002Fstrong> plugin has the option to activate \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCross-origin_resource_sharing\" rel=\"nofollow ugc\">CORS\u003C\u002Fa> support.\u003C\u002Fp>\n\u003Cp>To enable CORS Support, edit your wp-config.php file and add a new constant called \u003Cstrong>JWT_AUTH_CORS_ENABLE\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define('JWT_AUTH_CORS_ENABLE', true);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Finally, activate the plugin within your wp-admin.\u003C\u002Fp>\n\u003Ch3>Namespace and Endpoints\u003C\u002Fh3>\n\u003Cp>When the plugin is activated, a new namespace is added:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002Fjwt-auth\u002Fv1\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Also, two new endpoints are added to this namespace:\u003C\u002Fp>\n\u003Cp>Endpoint | HTTP Verb\u003Cbr \u002F>\n\u003Cem>\u002Fwp-json\u002Fjwt-auth\u002Fv1\u002Ftoken\u003C\u002Fem> | POST\u003Cbr \u002F>\n\u003Cem>\u002Fwp-json\u002Fjwt-auth\u002Fv1\u002Ftoken\u002Fvalidate\u003C\u002Fem> | POST\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Need more functionality?\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=endpoints_pro_note\" rel=\"nofollow ugc\">JWT Authentication PRO\u003C\u002Fa> includes additional endpoints for token refresh and revocation.\u003C\u002Fp>\n\u003Ch3>USAGE\u003C\u002Fh3>\n\u003Ch4>\u002Fwp-json\u002Fjwt-auth\u002Fv1\u002Ftoken\u003C\u002Fh4>\n\u003Cp>This is the entry point for JWT Authentication.\u003C\u002Fp>\n\u003Cp>It validates the user credentials, \u003Cem>username\u003C\u002Fem> and \u003Cem>password\u003C\u002Fem>, and returns a token to use in future requests to the API if the authentication is correct, or an error if authentication fails.\u003C\u002Fp>\n\u003Cp>Sample Request Using AngularJS\u003C\u002Fp>\n\u003Cpre>\u003Ccode>(function() {\n  var app = angular.module('jwtAuth', []);\n\n  app.controller('MainController', function($scope, $http) {\n    var apiHost = 'http:\u002F\u002Fyourdomain.com\u002Fwp-json';\n\n    $http.post(apiHost + '\u002Fjwt-auth\u002Fv1\u002Ftoken', {\n      username: 'admin',\n      password: 'password'\n    })\n    .then(function(response) {\n      console.log(response.data)\n    })\n    .catch(function(error) {\n      console.error('Error', error.data[0]);\n    });\n  });\n})();\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Success Response From The Server\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9qd3QuZGV2IiwiaWF0IjoxNDM4NTcxMDUwLCJuYmYiOjE0Mzg1NzEwNTAsImV4cCI6MTQzOTE3NTg1MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.YNe6AyWW4B7ZwfFE5wJ0O6qQ8QFcYizimDmBy6hCH_8\",\n  \"user_display_name\": \"admin\",\n  \"user_email\": \"admin@localhost.dev\",\n  \"user_nicename\": \"admin\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Error Response From The Server\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"code\": \"jwt_auth_failed\",\n  \"data\": {\n    \"status\": 403\n  },\n  \"message\": \"Invalid Credentials.\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Once you get the token, you must store it somewhere in your application, e.g., in a \u003Cstrong>cookie\u003C\u002Fstrong> or using \u003Cstrong>localStorage\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>From this point, you should pass this token with every API call.\u003C\u002Fp>\n\u003Cp>Sample Call Using The Authorization Header With AngularJS\u003C\u002Fp>\n\u003Cpre>\u003Ccode>app.config(function($httpProvider) {\n  $httpProvider.interceptors.push(['$q', '$location', '$cookies', function($q, $location, $cookies) {\n    return {\n      'request': function(config) {\n        config.headers = config.headers || {};\n        \u002F\u002F Assume that you store the token in a cookie\n        var globals = $cookies.getObject('globals') || {};\n        \u002F\u002F If the cookie has the CurrentUser and the token\n        \u002F\u002F add the Authorization header in each request\n        if (globals.currentUser && globals.currentUser.token) {\n          config.headers.Authorization = 'Bearer ' + globals.currentUser.token;\n        }\n        return config;\n      }\n    };\n  }]);\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The \u003Cstrong>wp-api-jwt-auth\u003C\u002Fstrong> plugin will intercept every call to the server and will look for the Authorization Header. If the Authorization header is present, it will try to decode the token and will set the user according to the data stored in it.\u003C\u002Fp>\n\u003Cp>If the token is valid, the API call flow will continue as normal.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Sample Headers\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>POST \u002Fresource HTTP\u002F1.1\nHost: server.example.com\nAuthorization: Bearer mF_s9.B5f-4.1JqM\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>ERRORS\u003C\u002Fh3>\n\u003Cp>If the token is invalid, an error will be returned. Here are some sample errors:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Invalid Credentials\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n  {\n    \"code\": \"jwt_auth_failed\",\n    \"message\": \"Invalid Credentials.\",\n    \"data\": {\n      \"status\": 403\n    }\n  }\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Invalid Signature\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n  {\n    \"code\": \"jwt_auth_invalid_token\",\n    \"message\": \"Signature verification failed\",\n    \"data\": {\n      \"status\": 403\n    }\n  }\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Expired Token\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n  {\n    \"code\": \"jwt_auth_invalid_token\",\n    \"message\": \"Expired token\",\n    \"data\": {\n      \"status\": 403\n    }\n  }\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Need advanced error tracking?\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=errors_pro_note\" rel=\"nofollow ugc\">JWT Authentication PRO\u003C\u002Fa> offers enhanced error tracking and monitoring capabilities.\u003C\u002Fp>\n\u003Ch4>\u002Fwp-json\u002Fjwt-auth\u002Fv1\u002Ftoken\u002Fvalidate\u003C\u002Fh4>\n\u003Cp>This is a simple helper endpoint to validate a token. You only need to make a POST request with the Authorization header.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Valid Token Response\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"code\": \"jwt_auth_valid_token\",\n  \"data\": {\n    \"status\": 200\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>AVAILABLE HOOKS\u003C\u002Fh3>\n\u003Cp>The \u003Cstrong>wp-api-jwt-auth\u003C\u002Fstrong> plugin is developer-friendly and provides five filters to override the default settings.\u003C\u002Fp>\n\u003Ch4>jwt_auth_cors_allow_headers\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_cors_allow_headers\u003C\u002Fstrong> filter allows you to modify the available headers when CORS support is enabled.\u003C\u002Fp>\n\u003Cp>Default Value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'Access-Control-Allow-Headers, Content-Type, Authorization'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>jwt_auth_not_before\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_not_before\u003C\u002Fstrong> filter allows you to change the \u003Ca href=\"https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc7519#section-4.1.5\" rel=\"nofollow ugc\">\u003Cstrong>nbf\u003C\u002Fstrong>\u003C\u002Fa> value before the token is created.\u003C\u002Fp>\n\u003Cp>Default Value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Creation time - time()\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>jwt_auth_expire\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_expire\u003C\u002Fstrong> filter allows you to change the \u003Ca href=\"https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc7519#section-4.1.4\" rel=\"nofollow ugc\">\u003Cstrong>exp\u003C\u002Fstrong>\u003C\u002Fa> value before the token is created.\u003C\u002Fp>\n\u003Cp>Default Value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>time() + (DAY_IN_SECONDS * 7)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>jwt_auth_token_before_sign\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_token_before_sign\u003C\u002Fstrong> filter allows you to modify all token data before it is encoded and signed.\u003C\u002Fp>\n\u003Cp>Default Value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$token = array(\n    'iss' => get_bloginfo('url'),\n    'iat' => $issuedAt,\n    'nbf' => $notBefore,\n    'exp' => $expire,\n    'data' => array(\n        'user' => array(\n            'id' => $user->data->ID,\n        )\n    )\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Want easier customization?\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=hook_payload_pro_note\" rel=\"nofollow ugc\">JWT Authentication PRO\u003C\u002Fa> allows you to add custom claims directly through the admin UI.\u003C\u002Fp>\n\u003Ch4>jwt_auth_token_before_dispatch\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_token_before_dispatch\u003C\u002Fstrong> filter allows you to modify the response array before it is sent to the client.\u003C\u002Fp>\n\u003Cp>Default Value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$data = array(\n    'token' => $token,\n    'user_email' => $user->data->user_email,\n    'user_nicename' => $user->data->user_nicename,\n    'user_display_name' => $user->data->display_name,\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>jwt_auth_algorithm\u003C\u002Fh4>\n\u003Cp>The \u003Cstrong>jwt_auth_algorithm\u003C\u002Fstrong> filter allows you to modify the signing algorithm.\u003C\u002Fp>\n\u003Cp>Default value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$token = JWT::encode(\n    apply_filters('jwt_auth_token_before_sign', $token, $user),\n    $secret_key,\n    apply_filters('jwt_auth_algorithm', 'HS256')\n);\n\n\u002F\u002F ...\n\n$token = JWT::decode(\n    $token,\n    new Key($secret_key, apply_filters('jwt_auth_algorithm', 'HS256'))\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>JWT Authentication PRO\u003C\u002Fh3>\n\u003Cp>Elevate your WordPress security and integration capabilities with \u003Cstrong>JWT Authentication PRO\u003C\u002Fstrong>. Building upon the solid foundation of the free version, the PRO version offers advanced features, enhanced security options, and a streamlined user experience:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Easy Configuration UI:\u003C\u002Fstrong> Manage all settings directly from the WordPress admin area.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Refresh Endpoint:\u003C\u002Fstrong> Allow users to refresh expired tokens seamlessly without requiring re-login.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Revocation Endpoint:\u003C\u002Fstrong> Immediately invalidate specific tokens for enhanced security control.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable Token Payload:\u003C\u002Fstrong> Add custom claims to your JWT payload to suit your specific application needs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Granular CORS Control:\u003C\u002Fstrong> Define allowed origins and headers with more precision directly in the settings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rate Limiting:\u003C\u002Fstrong> Protect your endpoints from abuse with configurable rate limits.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Audit Logs:\u003C\u002Fstrong> Keep track of token generation, validation, and errors.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Priority Support:\u003C\u002Fstrong> Get faster, dedicated support directly from the developer.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fjwtauth.pro\u002F?utm_source=wp_plugin_readme&utm_medium=link&utm_campaign=pro_promotion&utm_content=pro_section_cta\" rel=\"nofollow ugc\">Upgrade to JWT Authentication PRO Today!\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Free vs. PRO Comparison\u003C\u002Fh3>\n\u003Cp>Here’s a quick look at the key differences:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Basic JWT Authentication:\u003C\u002Fstrong> Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Generation:\u003C\u002Fstrong> Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Validation:\u003C\u002Fstrong> Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Refresh Mechanism:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Revocation:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Management Dashboard:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analytics & Monitoring:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Geo-IP Identification:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rate Limiting:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Detailed Documentation:\u003C\u002Fstrong> Basic (Free), Comprehensive (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer Tools:\u003C\u002Fstrong> Not Included (Free), Included (PRO)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Premium Support:\u003C\u002Fstrong> Community via GitHub (Free), Priority Direct Support (PRO)\u003C\u002Fli>\n\u003C\u002Ful>\n","Extends the WP REST API using JSON Web Tokens Authentication as an authentication method.",60000,893830,88,53,"2026-02-18T00:58:00.000Z","4.2","7.4.0",[122,123,124,81,125],"json-web-authentication","jwt","oauth","wp-api","https:\u002F\u002Fenriquechavez.co","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjwt-authentication-for-wp-rest-api.1.5.0.zip",{"slug":129,"name":130,"version":131,"author":132,"author_profile":133,"description":134,"short_description":135,"active_installs":114,"downloaded":136,"rating":72,"num_ratings":137,"last_updated":138,"tested_up_to":50,"requires_at_least":139,"requires_php":52,"tags":140,"homepage":143,"download_link":144,"security_score":145,"vuln_count":14,"unpatched_count":11,"last_vuln_date":146,"fetched_at":28},"wp-accessibility","WP Accessibility","2.3.2","Joe Dolson","https:\u002F\u002Fprofiles.wordpress.org\u002Fjoedolson\u002F","\u003Cp>This plug-in helps with a variety of common accessibility problems in WordPress themes. While most accessibility issues can’t be addressed without directly changing your theme, WP Accessibility adds a number of helpful accessibility features with a minimum amount of setup or expert knowledge.\u003C\u002Fp>\n\u003Cp>WP Accessibility is not intended to make your site compatible with any accessibility guidelines.\u003C\u002Fp>\n\u003Cp>All features can be disabled according to your theme’s needs. For advanced users, all of the functions based on modifying stylesheets can be customized using your own custom styles by placing the appropriate stylesheet in your theme directory.\u003C\u002Fp>\n\u003Ch4>Theme Accessibility Features added by WP Accessibility\u003C\u002Fh4>\n\u003Cp>These are features that address issues caused by inaccessible themes.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Add skip links with user-defined targets. (Customizable targets and appearance.)\u003C\u002Fli>\n\u003Cli>Add language and text direction attributes to your HTML attribute if missing.\u003C\u002Fli>\n\u003Cli>Add an outline to the keyboard focus state for focusable elements.\u003C\u002Fli>\n\u003Cli>Add a long description to images. Use the image’s “Description” field to add long descriptions.\u003C\u002Fli>\n\u003Cli>Enforcement for alt attributes on images in the Classic editor.\u003C\u002Fli>\n\u003Cli>Identify images without alt attributes in the Media Library\u003C\u002Fli>\n\u003Cli>Add labels to standard WordPress form fields (search, comments)\u003C\u002Fli>\n\u003Cli>Add post titles to “read more” links.\u003C\u002Fli>\n\u003Cli>Remove tabindex from elements that are focusable. (Also fixes plugin-caused problems.)\u003C\u002Fli>\n\u003Cli>Remove user-scalable=no to allow resizing.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>WordPress Core Accessibility Issues fixed by WP Accessibility\u003C\u002Fh4>\n\u003Cp>These are features that address issues caused by current or past WordPress core accessibility issues. (Issues added in content, such as target or title attributes, are persistent even when WordPress is updated.)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Force a search page error when a search is made with an empty text string. (If your theme has a search.php template.)\u003C\u002Fli>\n\u003Cli>Remove redundant title attributes from tag clouds.\u003C\u002Fli>\n\u003Cli>Disable default enabling of full screen block editor.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Content specific fixes:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Strip title attributes from images inserted into content.\u003C\u002Fli>\n\u003Cli>Remove the target attribute from links.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Accessibility Tools in WP Accessibility:\u003C\u002Fh4>\n\u003Cp>These are tools provided to help you identify issues you may need to fix.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Test the color contrast between two provided hexadecimal color values.\u003C\u002Fli>\n\u003Cli>Enable diagnostic CSS to show CSS-detectable problems in visual editor or on front-end of site.\u003C\u002Fli>\n\u003Cli>Search your media library on content in alt text fields.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Learn more! \u003Ca href=\"https:\u002F\u002Fdocs.joedolson.com\u002Fwp-accessibility\u002F\" rel=\"nofollow ugc\">Read about the accessibility issues corrected\u003C\u002Fa> by WP Accessibility!\u003C\u002Fp>\n\u003Cp>The plug-in is intended to help with deficiencies commonly found in themes and to solve some issues in WordPress core. It can’t correct every problem (by a long shot), but provides tools to fix some issues, supplement the accessibility of your site, or identify problems.\u003C\u002Fp>\n\u003Ch4>Statistics Collection\u003C\u002Fh4>\n\u003Cp>WP Accessibility includes a statistics collection feature to help you identify how WP Accessibility is used on your site. This package does not collect any personally identifying data.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdocs.joedolson.com\u002Fwp-accessibility\u002F2023\u002F11\u002F16\u002Fwp-accessibility-statistics\u002F\" rel=\"nofollow ugc\">Learn more about WP Accessibility statistics\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Contribute!\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftranslate.wordpress.org\u002Fprojects\u002Fwp-plugins\u002Fwp-accessibility\" rel=\"nofollow ugc\">Help Translate WP Accessibility\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoedolson\u002Fwp-accessibility\" rel=\"nofollow ugc\">Contribute to WP Accessibility\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","WP Accessibility fixes common accessibility issues in your WordPress site.",1750541,68,"2026-02-18T18:38:00.000Z","5.9",[54,20,141,142,24],"alt-text","section508","https:\u002F\u002Fwww.joedolson.com\u002Fwp-accessibility\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-accessibility.2.3.2.zip",98,"2026-02-26 19:26:02",{"attackSurface":148,"codeSignals":330,"taintFlows":400,"riskAssessment":542,"analyzedAt":549},{"hooks":149,"ajaxHandlers":241,"restRoutes":293,"shortcodes":316,"cronEvents":321,"entryPointCount":191,"unprotectedCount":11},[150,156,159,162,166,171,174,179,182,187,192,195,199,201,203,207,211,214,218,222,226,229,233,237],{"type":151,"name":152,"callback":153,"file":154,"line":155},"action","rest_api_init","register_rest_endpoints","includes\\class-tc-collaboration.php",37,{"type":151,"name":157,"callback":158,"file":154,"line":73},"wp_enqueue_scripts","enqueue_collaboration_scripts",{"type":151,"name":157,"callback":160,"file":154,"line":161},"localize_collaboration_data",39,{"type":151,"name":163,"callback":164,"file":154,"line":165},"tablecrafter_cleanup_collaboration_sessions","cleanup_expired_sessions",42,{"type":151,"name":167,"callback":168,"file":169,"line":170},"elementor\u002Fwidgets\u002Fregister","register_tc_elementor_widget","includes\\class-tc-elementor-widget.php",854,{"type":151,"name":172,"callback":168,"file":169,"line":173},"elementor\u002Fwidgets\u002Fwidgets_registered",857,{"type":151,"name":175,"callback":176,"file":177,"line":178},"tc_cleanup_export_files","cleanup_temp_files","includes\\class-tc-export-handler-enhanced.php",84,{"type":151,"name":157,"callback":180,"file":181,"line":73},"enqueue_performance_assets","includes\\class-tc-performance-optimizer.php",{"type":183,"name":184,"callback":185,"priority":186,"file":181,"line":161},"filter","tablecrafter_render_data","optimize_rendering",10,{"type":151,"name":188,"callback":189,"file":190,"line":191},"admin_notices","closure","tablecrafter.php",22,{"type":151,"name":193,"callback":189,"file":190,"line":194},"elementor\u002Floaded",89,{"type":151,"name":196,"callback":197,"file":190,"line":198},"elementor\u002Felements\u002Fcategories_registered","add_tc_elementor_category",95,{"type":151,"name":167,"callback":168,"file":190,"line":200},101,{"type":151,"name":172,"callback":168,"file":190,"line":202},102,{"type":151,"name":204,"callback":205,"file":190,"line":206},"init","register_assets",155,{"type":151,"name":208,"callback":209,"file":190,"line":210},"admin_enqueue_scripts","enqueue_admin_assets",156,{"type":151,"name":204,"callback":212,"file":190,"line":213},"register_block",157,{"type":151,"name":215,"callback":216,"file":190,"line":217},"admin_menu","add_admin_menu",159,{"type":151,"name":219,"callback":220,"file":190,"line":221},"admin_init","welcome_redirect",160,{"type":151,"name":223,"callback":224,"file":190,"line":225},"wp_head","add_export_nonce",161,{"type":151,"name":227,"callback":224,"file":190,"line":228},"admin_head",162,{"type":151,"name":230,"callback":231,"file":190,"line":232},"tc_refresher_cron","automated_cache_refresh",169,{"type":151,"name":234,"callback":235,"priority":186,"file":190,"line":236},"tc_refresh_single_source","refresh_source_cache",170,{"type":183,"name":238,"callback":239,"priority":186,"file":190,"line":240},"wp_kses_allowed_protocols","anonymous",2374,[242,248,250,253,255,259,261,265,267,271,273,276,278,281,283,287,289],{"action":243,"nopriv":244,"callback":245,"hasNonce":246,"hasCapCheck":244,"file":177,"line":247},"tc_export_data",false,"handle_export_ajax",true,78,{"action":243,"nopriv":246,"callback":245,"hasNonce":246,"hasCapCheck":244,"file":177,"line":249},79,{"action":251,"nopriv":244,"callback":252,"hasNonce":246,"hasCapCheck":244,"file":177,"line":95},"tc_download_export","handle_download_request",{"action":251,"nopriv":246,"callback":252,"hasNonce":246,"hasCapCheck":244,"file":177,"line":254},81,{"action":256,"nopriv":244,"callback":257,"hasNonce":246,"hasCapCheck":246,"file":181,"line":258},"tc_virtual_scroll_data","ajax_virtual_scroll_data",330,{"action":256,"nopriv":246,"callback":257,"hasNonce":246,"hasCapCheck":246,"file":181,"line":260},331,{"action":262,"nopriv":244,"callback":263,"hasNonce":246,"hasCapCheck":246,"file":190,"line":264},"tc_proxy_fetch","ajax_proxy_fetch",165,{"action":262,"nopriv":246,"callback":263,"hasNonce":246,"hasCapCheck":246,"file":190,"line":266},166,{"action":268,"nopriv":244,"callback":269,"hasNonce":246,"hasCapCheck":244,"file":190,"line":270},"tc_subscribe_lead","handle_lead_subscription",173,{"action":268,"nopriv":246,"callback":269,"hasNonce":246,"hasCapCheck":244,"file":190,"line":272},174,{"action":243,"nopriv":244,"callback":274,"hasNonce":246,"hasCapCheck":246,"file":190,"line":275},"ajax_export_data",177,{"action":243,"nopriv":246,"callback":274,"hasNonce":246,"hasCapCheck":246,"file":190,"line":277},178,{"action":251,"nopriv":244,"callback":279,"hasNonce":246,"hasCapCheck":244,"file":190,"line":280},"ajax_download_export",179,{"action":251,"nopriv":246,"callback":279,"hasNonce":246,"hasCapCheck":244,"file":190,"line":282},180,{"action":284,"nopriv":244,"callback":285,"hasNonce":246,"hasCapCheck":246,"file":190,"line":286},"tc_elementor_preview","ajax_elementor_preview",183,{"action":284,"nopriv":246,"callback":285,"hasNonce":246,"hasCapCheck":246,"file":190,"line":288},184,{"action":290,"nopriv":244,"callback":291,"hasNonce":246,"hasCapCheck":246,"file":190,"line":292},"tc_save_airtable_token","ajax_save_airtable_token",187,[294,302,306,311],{"namespace":295,"route":296,"methods":297,"callback":299,"permissionCallback":300,"file":154,"line":301},"tablecrafter\u002Fv1","\u002Fcollaboration\u002Fjoin",[298],"POST","handle_join_session","check_collaboration_permission",52,{"namespace":295,"route":303,"methods":304,"callback":305,"permissionCallback":300,"file":154,"line":47},"\u002Fcollaboration\u002Fleave",[298],"handle_leave_session",{"namespace":295,"route":307,"methods":308,"callback":309,"permissionCallback":300,"file":154,"line":310},"\u002Fcollaboration\u002Fbroadcast",[298],"handle_broadcast_event",64,{"namespace":295,"route":312,"methods":313,"callback":314,"permissionCallback":300,"file":154,"line":315},"\u002Fcollaboration\u002Fsync",[298],"handle_sync_request",70,[317],{"tag":318,"callback":319,"file":190,"line":320},"tablecrafter","render_table",158,[322,324,326,328],{"hook":163,"callback":163,"file":154,"line":323},44,{"hook":175,"callback":175,"file":177,"line":325},86,{"hook":230,"callback":230,"file":190,"line":327},190,{"hook":234,"callback":234,"file":190,"line":329},700,{"dangerousFunctions":331,"sqlUsage":332,"outputEscaping":335,"fileOperations":386,"externalRequests":397,"nonceChecks":397,"capabilityChecks":398,"bundledLibraries":399},[],{"prepared":333,"raw":11,"locations":334},16,[],{"escaped":336,"rawEcho":337,"locations":338},134,31,[339,342,345,347,349,350,352,354,356,357,358,359,361,362,363,365,367,369,371,373,376,378,380,381,383,384,387,389,391,393,395],{"file":169,"line":340,"context":341},601,"raw output",{"file":343,"line":344,"context":341},"run-tdd-green-test.php",36,{"file":343,"line":346,"context":341},55,{"file":343,"line":348,"context":341},73,{"file":343,"line":116,"context":341},{"file":343,"line":351,"context":341},103,{"file":343,"line":353,"context":341},124,{"file":343,"line":355,"context":341},144,{"file":343,"line":228,"context":341},{"file":343,"line":275,"context":341},{"file":343,"line":282,"context":341},{"file":343,"line":360,"context":341},182,{"file":343,"line":286,"context":341},{"file":343,"line":288,"context":341},{"file":343,"line":364,"context":341},185,{"file":343,"line":366,"context":341},186,{"file":343,"line":368,"context":341},195,{"file":190,"line":370,"context":341},747,{"file":190,"line":372,"context":341},1210,{"file":374,"line":375,"context":341},"test-activation-fix.php",23,{"file":374,"line":377,"context":341},26,{"file":374,"line":379,"context":341},35,{"file":374,"line":47,"context":341},{"file":374,"line":382,"context":341},61,{"file":374,"line":315,"context":341},{"file":385,"line":386,"context":341},"test-edge-cases.php",25,{"file":385,"line":388,"context":341},28,{"file":385,"line":390,"context":341},198,{"file":385,"line":392,"context":341},213,{"file":394,"line":368,"context":341},"views\\welcome.php",{"file":394,"line":396,"context":341},274,11,12,[],[401,449,485,494,506,517],{"entryPoint":402,"graph":403,"unsanitizedCount":447,"severity":448},"handle_export_ajax (includes\\class-tc-export-handler-enhanced.php:377)",{"nodes":404,"edges":440},[405,410,414,420,423,426,428,432,435],{"id":406,"type":407,"label":408,"file":177,"line":409},"n0","source","$_POST (x2)",398,{"id":411,"type":412,"label":413,"file":177,"line":409},"n1","transform","→ export_to_excel()",{"id":415,"type":416,"label":417,"file":177,"line":418,"wp_function":419},"n2","sink","file_put_contents() [File Write]",113,"file_put_contents",{"id":421,"type":407,"label":408,"file":177,"line":422},"n3",401,{"id":424,"type":412,"label":425,"file":177,"line":422},"n4","→ export_to_pdf()",{"id":427,"type":416,"label":417,"file":177,"line":217,"wp_function":419},"n5",{"id":429,"type":407,"label":430,"file":177,"line":431},"n6","$_POST",405,{"id":433,"type":412,"label":434,"file":177,"line":431},"n7","→ export_to_csv()",{"id":436,"type":416,"label":437,"file":177,"line":438,"wp_function":439},"n8","fopen() [File Access]",475,"fopen",[441,442,443,444,445,446],{"from":406,"to":411,"sanitized":244},{"from":411,"to":415,"sanitized":244},{"from":421,"to":424,"sanitized":244},{"from":424,"to":427,"sanitized":244},{"from":429,"to":433,"sanitized":244},{"from":433,"to":436,"sanitized":244},5,"medium",{"entryPoint":450,"graph":451,"unsanitizedCount":447,"severity":448},"\u003Cclass-tc-export-handler-enhanced> (includes\\class-tc-export-handler-enhanced.php:0)",{"nodes":452,"edges":476},[453,456,460,462,463,464,465,466,467,468,470,472,474],{"id":406,"type":407,"label":454,"file":177,"line":455},"$_GET (x2)",424,{"id":411,"type":416,"label":457,"file":177,"line":458,"wp_function":459},"header() [Header Injection]",454,"header",{"id":415,"type":407,"label":461,"file":177,"line":455},"$_GET",{"id":421,"type":416,"label":437,"file":177,"line":438,"wp_function":439},{"id":424,"type":407,"label":408,"file":177,"line":409},{"id":427,"type":412,"label":413,"file":177,"line":409},{"id":429,"type":416,"label":417,"file":177,"line":418,"wp_function":419},{"id":433,"type":407,"label":408,"file":177,"line":422},{"id":436,"type":412,"label":425,"file":177,"line":422},{"id":469,"type":416,"label":417,"file":177,"line":217,"wp_function":419},"n9",{"id":471,"type":407,"label":430,"file":177,"line":431},"n10",{"id":473,"type":412,"label":434,"file":177,"line":431},"n11",{"id":475,"type":416,"label":437,"file":177,"line":438,"wp_function":439},"n12",[477,478,479,480,481,482,483,484],{"from":406,"to":411,"sanitized":246},{"from":415,"to":421,"sanitized":246},{"from":424,"to":427,"sanitized":244},{"from":427,"to":429,"sanitized":244},{"from":433,"to":436,"sanitized":244},{"from":436,"to":469,"sanitized":244},{"from":471,"to":473,"sanitized":244},{"from":473,"to":475,"sanitized":244},{"entryPoint":486,"graph":487,"unsanitizedCount":11,"severity":493},"handle_download_request (includes\\class-tc-export-handler-enhanced.php:422)",{"nodes":488,"edges":491},[489,490],{"id":406,"type":407,"label":454,"file":177,"line":455},{"id":411,"type":416,"label":457,"file":177,"line":458,"wp_function":459},[492],{"from":406,"to":411,"sanitized":246},"low",{"entryPoint":495,"graph":496,"unsanitizedCount":11,"severity":493},"ajax_save_airtable_token (tablecrafter.php:757)",{"nodes":497,"edges":504},[498,500],{"id":406,"type":407,"label":430,"file":190,"line":499},764,{"id":411,"type":416,"label":501,"file":190,"line":502,"wp_function":503},"update_option() [Settings Manipulation]",778,"update_option",[505],{"from":406,"to":411,"sanitized":246},{"entryPoint":507,"graph":508,"unsanitizedCount":11,"severity":493},"ajax_download_export (tablecrafter.php:2119)",{"nodes":509,"edges":515},[510,513],{"id":406,"type":407,"label":511,"file":190,"line":512},"$_GET (x3)",2128,{"id":411,"type":416,"label":457,"file":190,"line":514,"wp_function":459},2150,[516],{"from":406,"to":411,"sanitized":246},{"entryPoint":518,"graph":519,"unsanitizedCount":11,"severity":493},"\u003Ctablecrafter> (tablecrafter.php:0)",{"nodes":520,"edges":537},[521,522,523,525,529,530,531,533],{"id":406,"type":407,"label":430,"file":190,"line":499},{"id":411,"type":416,"label":501,"file":190,"line":502,"wp_function":503},{"id":415,"type":407,"label":430,"file":190,"line":524},1538,{"id":421,"type":416,"label":526,"file":190,"line":527,"wp_function":528},"wp_remote_get() [SSRF]",1624,"wp_remote_get",{"id":424,"type":407,"label":511,"file":190,"line":512},{"id":427,"type":416,"label":457,"file":190,"line":514,"wp_function":459},{"id":429,"type":407,"label":430,"file":190,"line":532},2177,{"id":433,"type":416,"label":534,"file":190,"line":535,"wp_function":536},"echo() [XSS]",2390,"echo",[538,539,540,541],{"from":406,"to":411,"sanitized":246},{"from":415,"to":421,"sanitized":246},{"from":424,"to":427,"sanitized":246},{"from":429,"to":433,"sanitized":246},{"summary":543,"deductions":544},"The \"tablecrafter-wp-data-tables\" v3.5.4 plugin exhibits a strong security posture based on the provided static analysis and vulnerability history. The complete absence of unpatched CVEs and the plugin's history of no recorded vulnerabilities are highly positive indicators of robust development and maintenance practices.  The plugin also demonstrates good coding standards by exclusively using prepared statements for SQL queries and implementing capability checks and nonce checks on its entry points. The attack surface, while present, is fully protected, and there are no identified critical or high-severity taint flows, indicating a well-handled data sanitization process.",[545,547],{"reason":546,"points":186},"Unsanitized paths in taint flows",{"reason":548,"points":447},"Partially unescaped output (19% of outputs)","2026-03-17T06:34:32.509Z",{"wat":551,"direct":556},{"assetPaths":552,"generatorPatterns":553,"scriptPaths":554,"versionParams":555},[],[],[],[],{"cssClasses":557,"htmlComments":558,"htmlAttributes":559,"restEndpoints":560,"jsGlobals":561,"shortcodeOutput":562},[],[],[],[],[],[]]