[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fnK_7j9ZCblXhnHOA6bGF-aekqdmswFgWLdbXr_SRBUk":3,"$fnTntOuK8AZM525gCsVh7Oaw1bjNTDPfObYMfE3Kgapk":602,"$fn9ywkcKCp_fIEDZfq7dJRmIheh1z97vJlE-3rzrnbhk":606},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":12,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":24,"download_link":25,"security_score":12,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":37,"analysis":123,"fingerprints":585},"pressprimer-assignment","PressPrimer Assignment","1.0.0","PressPrimer","https:\u002F\u002Fprofiles.wordpress.org\u002Fpressprimer\u002F","\u003Cp>\u003Cstrong>PressPrimer Assignment\u003C\u002Fstrong> is a professional assignment submission and grading plugin that gives WordPress educators everything they need to collect student work, provide meaningful feedback, and track grades, all without juggling email attachments, shared drives, or clunky LMS add-ons.\u003C\u002Fp>\n\u003Cp>Students get a clean, focused submission experience. Teachers get a centralized grading dashboard. And you keep full control of your data on your own WordPress site.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>This is a genuinely free plugin.\u003C\u002Fstrong> Unlimited assignments, unlimited submissions, full grading tools, LMS integration, and email notifications are all included at no cost. We earn upgrades by building specialized features worth paying for, not by crippling what you get for free.\u003C\u002Fp>\n\u003Ch4>Why PressPrimer Assignment?\u003C\u002Fh4>\n\u003Cp>Built-in assignment tools in WordPress LMS plugins are often afterthoughts, limited to basic file uploads with no real grading workflow, limited feedback options, and dated interfaces. Dedicated assignment platforms charge monthly fees with per-student pricing that gets expensive fast.\u003C\u002Fp>\n\u003Cp>PressPrimer Assignment delivers a focused, polished assignment workflow with the features educators actually need:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Flexible Submission Types\u003C\u002Fstrong> – Accept file uploads, rich text submissions, or let students choose. Support for PDF, DOCX, TXT, RTF, ODT, and image files out of the box.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Grade Without Leaving WordPress\u003C\u002Fstrong> – A dedicated grading queue with a side-by-side interface: the student’s document renders on the left while you score and write feedback on the right. Built-in viewers for PDF, Word documents, images, and text files mean you never have to download, open, and track files on your desktop.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Native LMS Integration\u003C\u002Fstrong> – Works with LearnDash and Tutor LMS. Assignments appear in lessons, passing grades trigger lesson completion, and instructor roles are mapped automatically.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure File Handling\u003C\u002Fstrong> – Six-layer file validation and permission-based file serving. Student files are never directly accessible via URL.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable Email Notifications\u003C\u002Fstrong> – Automatic emails for submission confirmation, grade release, and new submission alerts. Fully customizable templates with token placeholders.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Three Professional Themes\u003C\u002Fstrong> – Default, Modern, and Minimal themes that match the PressPrimer Quiz visual style.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Features Included Free\u003C\u002Fh4>\n\u003Cp>PressPrimer Assignment includes everything you need to manage assignments at any scale:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Assignment Creation\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Unlimited assignments with title, description, instructions, and grading guidelines\u003C\u002Fli>\n\u003Cli>Configurable maximum points and passing score\u003C\u002Fli>\n\u003Cli>Three submission types: file upload, text\u002Frich text, or student’s choice\u003C\u002Fli>\n\u003Cli>Configurable file types, file size limits (up to 100 MB), and multiple files per submission\u003C\u002Fli>\n\u003Cli>Assignment categories for organization\u003C\u002Fli>\n\u003Cli>Draft, Published, and Archived status workflow\u003C\u002Fli>\n\u003Cli>Resubmission support with configurable attempt limits\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Student Submission Experience\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Drag-and-drop file upload with progress indicators\u003C\u002Fli>\n\u003Cli>TinyMCE rich text editor with live word count and auto-save drafts\u003C\u002Fli>\n\u003Cli>Submission preview with confirmation before final submit\u003C\u002Fli>\n\u003Cli>Student notes field for context or questions\u003C\u002Fli>\n\u003Cli>View submission status, grade, and instructor feedback\u003C\u002Fli>\n\u003Cli>Previous submission history with feedback for each attempt\u003C\u002Fli>\n\u003Cli>[pressprimer_assignment_my_submissions] shortcode for a personal submissions dashboard\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Grading & Feedback\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Centralized grading queue with filter and sort\u003C\u002Fli>\n\u003Cli>Side-by-side grading interface: document viewer on the left, grading panel on the right\u003C\u002Fli>\n\u003Cli>Built-in viewers render PDF, DOCX, images, and text files directly in WordPress; no downloading required\u003C\u002Fli>\n\u003Cli>Score input with automatic pass\u002Ffail calculation\u003C\u002Fli>\n\u003Cli>Rich text feedback field\u003C\u002Fli>\n\u003Cli>Grading guidelines reference panel pulled from the assignment\u003C\u002Fli>\n\u003Cli>Status workflow: Submitted, Grading, Graded, Returned\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Email Notifications\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Submission confirmation, grade notification, and new submission alert emails\u003C\u002Fli>\n\u003Cli>Customizable subject and body templates per email type\u003C\u002Fli>\n\u003Cli>Token placeholders: student name, assignment title, score, feedback URL, and more\u003C\u002Fli>\n\u003Cli>Custom from name, from email, and logo\u003C\u002Fli>\n\u003Cli>Test email feature in settings\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Admin Dashboard & Reports\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Dashboard with submission statistics, activity chart, and recent submissions\u003C\u002Fli>\n\u003Cli>Reports page with filterable submission data\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Security & Accessibility\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Six-layer file upload validation (extension whitelist, MIME verification, double-extension blocking, dangerous file rejection)\u003C\u002Fli>\n\u003Cli>Files stored outside webroot with permission-based serving through PHP\u003C\u002Fli>\n\u003Cli>Capability-based access control (teachers see only their own assignments)\u003C\u002Fli>\n\u003Cli>WordPress Privacy API integration (Tools > Export\u002FErase Personal Data)\u003C\u002Fli>\n\u003Cli>Clean uninstall with optional complete data and file removal\u003C\u002Fli>\n\u003Cli>Three professional themes with responsive design, RTL support, and print styles\u003C\u002Fli>\n\u003Cli>Keyboard navigation, screen reader support, and reduced motion preferences\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Perfect For\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>LearnDash course creators\u003C\u002Fstrong> who need a better assignment experience than the built-in tool\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Tutor LMS instructors\u003C\u002Fstrong> who want document submission and grading in their courses\u003C\u002Fli>\n\u003Cli>\u003Cstrong>University departments\u003C\u002Fstrong> collecting essays, lab reports, or research papers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Corporate trainers\u003C\u002Fstrong> gathering certification documents and project deliverables\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Standalone WordPress educators\u003C\u002Fstrong> who need assignments without a full LMS\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Online course entrepreneurs\u003C\u002Fstrong> selling courses with graded assignments\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Built-in Integrations\u003C\u002Fh4>\n\u003Cp>PressPrimer Assignment detects and integrates with popular WordPress LMS plugins automatically.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>LearnDash:\u003C\u002Fstrong> Attach assignments to lessons or topics via the editor sidebar. Passing an assignment can automatically mark the lesson or topic complete. LearnDash Group Leaders are granted teacher-level permissions to create assignments and grade their students’ submissions. The “Mark Complete” button is hidden until a required assignment is passed.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Tutor LMS:\u003C\u002Fstrong> Attach assignments to lessons via the course builder. Passing an assignment can auto-complete the lesson and trigger course completion when all lessons are done. Tutor LMS Instructors are granted teacher-level permissions. If both PressPrimer Quiz and PressPrimer Assignment are attached to a lesson, both must be passed before the lesson completes.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Uncanny Automator:\u003C\u002Fstrong> Four triggers available—user submits an assignment, user is graded, user passes, user fails. Each trigger includes a full set of tokens (assignment title, score, feedback, student info, grader info, and more) for use in automated workflows.\u003C\u002Fp>\n\u003Cp>All integrations are included in the free version.\u003C\u002Fp>\n\u003Ch4>Built for Developers\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Action hooks for assignment creation, submission, grading, and email events\u003C\u002Fli>\n\u003Cli>Filter hooks for submission permissions, file access, email templates, and role mapping\u003C\u002Fli>\n\u003Cli>Full REST API for assignments, submissions, files, categories, and statistics\u003C\u002Fli>\n\u003Cli>Custom database tables with automatic schema migration\u003C\u002Fli>\n\u003Cli>Extensible settings panel with tab registration hooks\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Documentation & Support\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fpressprimer.com\u002Fknowledge-base\u002Fpressprimer-assignment\u002F\" rel=\"nofollow ugc\">Knowledge Base\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Source Code & Development\u003C\u002Fh4>\n\u003Cp>The full uncompressed source code for all JavaScript and CSS files is available in our public GitHub repository:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPressPrimer\u002Fpressprimer-assignment\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The \u003Ccode>\u002Fsrc\u003C\u002Fcode> directory contains all unminified source files. The plugin uses webpack for building production assets. To rebuild from source:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Clone the repository\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>npm install\u003C\u002Fcode> to install dependencies\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>npm run build\u003C\u002Fcode> to compile assets\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Privacy\u003C\u002Fh3>\n\u003Cp>PressPrimer Assignment stores student submission data (files, text, grades, and feedback) in your WordPress database under your full control. No data is transmitted to external servers. All submitted files are stored in a protected directory under \u003Ccode>wp-content\u002Fuploads\u002Fppa-submissions\u002F\u003C\u002Fcode> and served via PHP with permission checks.\u003C\u002Fp>\n\u003Cp>The plugin integrates with the WordPress Privacy API:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Tools > Export Personal Data\u003C\u002Fstrong> — includes all submissions, grades, feedback, and uploaded file metadata for the requested user.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Tools > Erase Personal Data\u003C\u002Fstrong> — permanently deletes all submissions, grades, and uploaded files for the requested user.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Administrators can permanently delete all plugin data (database tables, uploaded files, options, and user meta) via Settings > Advanced > “Remove all data on uninstall” before uninstalling the plugin.\u003C\u002Fp>\n","Collect, review, and grade student assignments in WordPress. File uploads, text submissions, inline feedback, and LMS integration. Free forever.",0,100,1,"2026-03-24T13:16:00.000Z","6.9.4","6.4","7.4",[19,20,21,22,23],"assignment","education","grading","learndash","lms","https:\u002F\u002Fpressprimer.com\u002Fassignment","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpressprimer-assignment.1.0.0.zip",null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":12,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"pressprimer",2,200,30,94,"2026-05-20T02:05:35.930Z",[38,61,78,94,111],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":48,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":17,"tags":53,"homepage":56,"download_link":57,"security_score":58,"vuln_count":59,"unpatched_count":11,"last_vuln_date":60,"fetched_at":27},"uncanny-learndash-toolkit","Uncanny Toolkit for LearnDash","3.8.0.2","Uncanny Owl","https:\u002F\u002Fprofiles.wordpress.org\u002Funcannyowl\u002F","\u003Cp>\u003Cstrong>Important: This plugin requires PHP 7.4 or higher and LearnDash 4.2 or higher.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The Uncanny Toolkit for LearnDash adds 16 modules that every elearning site needs, including a login form, login redirect, resume capabilities and more. Trusted to power over \u003Cstrong>30,000+\u003C\u002Fstrong> LearnDash sites, it’s the easiest way to improve the learning experience for your students. Translation ready and multisite capable!\u003C\u002Fp>\n\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\u002Fo0MWoyR5Sos?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>The Uncanny Toolkit for LearnDash adds the following features to your LearnDash site:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fdisable-emails\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Disable Emails\u003C\u002Fa>\u003C\u002Fstrong>: While this module is active, WordPress and any plugins using native WordPress email functions will be prevented from sending email. Use this on development and staging sites to block accidental customer emails.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Ffront-end-login\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Front End Login\u003C\u002Fa>\u003C\u002Fstrong>: Add full-featured login forms with reCaptcha, password reset, and user validation support to front end pages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fhide-admin-bar\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Hide Admin Bar\u003C\u002Fa>\u003C\u002Fstrong>: Hide the Admin Bar at the top of WordPress pages based on user role.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-breadcrumb-links\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">LearnDash Breadcrumbs\u003C\u002Fa>\u003C\u002Fstrong>: Easily add breadcrumb links that work with courses, lessons, topics and quizzes using a shortcode or template change. \u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-certificate-widget\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">LearnDash Certificate Widget\u003C\u002Fa>\u003C\u002Fstrong>: Display all LearnDash certificates earned by a user in a widget.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-groups-user-profiles\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">LearnDash Groups in User Profiles\u003C\u002Fa>\u003C\u002Fstrong>: Display a user’s LearnDash Group memberships in the user profile.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-resume\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">LearnDash Resume Button\u003C\u002Fa>\u003C\u002Fstrong>: Inserts a button that allows learners to return to the course, lesson or topic that they last visited.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flog-in-log-out-links\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Log In\u002FLog Out Links\u003C\u002Fa>\u003C\u002Fstrong>: Add Log In and Log Out links to site menus, or to any page or widget with a shortcode.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-login-redirect\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Login\u002FLogout Redirects\u003C\u002Fa>\u003C\u002Fstrong>: Redirect learners to a specific URL after signing in or out of the site.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fmenu-item-visibility\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Menu Item Visibility\u003C\u002Fa>\u003C\u002Fstrong>: Toggle the visibility of menu items based on whether or not users are signed in to the site.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fredirect-user-if-not-enrolled\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Not Enrolled Redirect\u003C\u002Fa>\u003C\u002Fstrong>: Redirect all non-admin roles to a specific URL if they are not enrolled in the course. This is useful for directing prospective customers to a course sales page.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fquiz-completion-advances-to-next-step\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Quiz completion advances to next step\u003C\u002Fa>\u003C\u002Fstrong>: Automatically advance to the next course step when a user clicks “Click here to continue” on quiz results page inside a lesson or topic.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fshow-learndash-certificates\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Show LearnDash Certificates\u003C\u002Fa>\u003C\u002Fstrong>: Display a list of LearnDash certificates (course, quiz and group) earned by the user, with the most recent at the top.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fshow-hide-content\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Show or Hide Content\u003C\u002Fa>\u003C\u002Fstrong>: Conditionally shows content to either logged in or logged out users. Great for Open course types or protecting content on a course page.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Ftopics-autocomplete-lessons\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Topics Autocomplete Lessons (Legacy)\u003C\u002Fa>\u003C\u002Fstrong>: Automatically marks lessons as completed when all topics and quizzes for that lesson are marked complete.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fuser-switching-module\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">User Switching\u003C\u002Fa>\u003C\u002Fstrong>: Easily and securely switch between users.  Great for testing your site and troubleshooting user issues.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>We welcome contributions to the Uncanny Toolkit! The plugin is managed in a \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FUncannyOwl\u002FUncanny-Toolkit-for-LearnDash\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Ready to take your LearnDash site even further?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fdownloads\u002Funcanny-learndash-toolkit-pro\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Pro version of the Uncanny Toolkit\u003C\u002Fa> adds a continuously expanding list of powerful features (currently 35) to the Toolkit. These include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fautocomplete-lessons-topics\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark all lessons and topics as completed on user visit and remove Mark Complete buttons. Global settings can be overridden for individual lessons and topics.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fffforms-auto-completes-lessons-topics\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics on Fluent Forms Submission\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as complete when the user submits a Fluent form.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fformidable-auto-completes-lessons-topics\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics on Formidable Forms Submission\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as complete when the user submits a Formidable form.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fgravity-forms-auto-completes-lessons-topics\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics on Gravity Form Submission\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as completed when the user submits a Gravity form.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fautocomplete-lessons-topics-quiz-results-page\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics on Quiz Results Page\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as completed when the user reaches the quiz results page with a passing mark (so users that forget to click “Click here to continue” don’t get stuck in a course).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fwpforms-auto-completes-lessons-topics\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics on WPForms Submission\u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as complete when the user submits a WPForms form.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fautocomplete-lessons-topics-when-quiz-is-graded\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Autocomplete Lessons & Topics When Quiz Is Graded \u003C\u002Fa>\u003C\u002Fstrong>: Automatically mark LearnDash lessons and topics as completed when the associated quiz is manually graded.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fcertificate-preview\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Certificate Preview\u003C\u002Fa>\u003C\u002Fstrong>: Get a preview of your LearnDash certificate without leaving the editor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-course-dashboard\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Course Dashboard\u003C\u002Fa>\u003C\u002Fstrong>: Display a list of enrolled courses to students in a variety of ways. This tool also makes it easy to access individual lessons, topics, quizzes, quiz results and certificates for students.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fdays-until-course-expiry\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Days Until Course Expiry\u003C\u002Fa>\u003C\u002Fstrong>: Display the number of days until the learner’s access expires for the current course. This is a useful shortcode to include on course pages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fdownload-certificates-in-bulk\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Download Certificates In Bulk\u003C\u002Fa>\u003C\u002Fstrong>: Download course, quiz and group certificates in bulk. Available to admins and Group Leaders.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fdrip-lessons-by-ldgroup\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Drip Lessons by LearnDash Group\u003C\u002Fa>\u003C\u002Fstrong>: Unlock access to LearnDash lessons by setting availability dates for LearnDash Groups rather than for all enrolled users.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fdrip-topics-by-ldgroup\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Drip Topics by Group\u003C\u002Fa>\u003C\u002Fstrong>: Unlock access to LearnDash topics by setting dates for LearnDash Groups rather than for all enrolled users.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fduplicate-pages-posts\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Duplicate Pages & Posts\u003C\u002Fa>\u003C\u002Fstrong>: Easily clone pages, posts, LearnDash courses, lessons, topics, quizzes and more.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fsend-course-certificates-email\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Email Course Certificates\u003C\u002Fa>\u003C\u002Fstrong>: Sends a copy of certificate earned from course completions and optionally save certificates on the server.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fsend-group-certificates-email\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Email Group Certificates\u003C\u002Fa>\u003C\u002Fstrong>: Sends a copy of certificate earned from group completions and save certificates on the server.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fsend-quiz-certificates-by-email\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Email Quiz Certificates\u003C\u002Fa>\u003C\u002Fstrong>: Sends a copy of certificates earned from quiz completions and save certificates on the server.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fenhanced-course-grid\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Enhanced Course Grid\u003C\u002Fa>\u003C\u002Fstrong>: Add a highly customizable grid of LearnDash courses to the front end, learner dashboard or anywhere you want. This is a great tool for sites with a large number of courses.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fenhanced-learndash-csv-reports\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Enhanced LearnDash CSV Reports\u003C\u002Fa>\u003C\u002Fstrong>: Add additional columns to the LearnDash Course CSV report, including custom user and course meta records.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fenhanced-lessontopic-grid\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Enhanced Lesson\u002FTopic Grid\u003C\u002Fa>\u003C\u002Fstrong>: Add a highly customizable grid of LearnDash lessons\u002Ftopics to the front end, learner dashboard or anywhere you want. \u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-group-expiration\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Group Expiration\u003C\u002Fa>\u003C\u002Fstrong>: Set expiration dates for LearnDash groups so that course enrolment for the group is removed on the specified day. Reminder emails can be sent to users advising them of group expiration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-group-forums-with-bbpress\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Group Forums with bbPress\u003C\u002Fa>\u003C\u002Fstrong>: Create group-specific discussion forums with bbPress. Only group members will have access to group-specific forums. Includes a handy widget.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-group-login-redirect\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Group Login Redirect\u003C\u002Fa>\u003C\u002Fstrong>: Adds a group-specific login redirect setting to LearnDash groups. Automatically redirect group members to a specific page on login.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fld-group-logo-list\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Group Logo\u002FList\u003C\u002Fa>\u003C\u002Fstrong>: Add group-specific logos to any page, including registration pages. A shortcode to list a user’s LearnDash Groups is also available.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fgroup-sign-up\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Group Registration\u003C\u002Fa>\u003C\u002Fstrong>: Allow users to add themselves directly to LearnDash groups on registration by assigning each group a unique registration URL. Users can also change or add groups themselves by visiting group URLs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fimport-learndash-users\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Import Users\u003C\u002Fa>\u003C\u002Fstrong>: Create or update users and assign them to courses and LearnDash groups from a CSV file. Supports custom user fields.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fgroup-leader-access\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Improved Group Leader Interface (deprecated)\u003C\u002Fa>\u003C\u002Fstrong>: This legacy module helped LearnDash 2.x and 3.x sites hide unrelated menu entries from \u002Fwp-admin\u002F and enroll Group Leaders in group courses.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flazy-loading-course-navigation\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Lazy Loading Course Navigation\u003C\u002Fa>\u003C\u002Fstrong>: Shortcode that loads a course navigation tree via AJAX. Useful on sites with many lessons and topics where the native LearnDash Course Navigation widget is extending page load time.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearner-transcript\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Learner Transcript\u003C\u002Fa>\u003C\u002Fstrong>: Add printable transcripts to the front end for your learners. This is a great way for learners to have a record of all course progress and overall standing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"http:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-table-colors\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Lesson\u002FTopic\u002FQuiz Table Colors (Legacy)\u003C\u002Fa>\u003C\u002Fstrong>: Change the background and header text color of LearnDash tables. This module modifies the course, lesson, topic, quiz, and Pro Dashboard tables. (Legacy LearnDash theme only).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Flearndash-reset\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Reset Progress Button\u003C\u002Fa>\u003C\u002Fstrong>: Inserts a button that allows learners to reset all activity for a course, allowing them to retake it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Frestrict-page-access\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Restrict Page Access\u003C\u002Fa>\u003C\u002Fstrong>: Restrict access to any page by logged in\u002Fout status, course enrollment, group membership, or role. Display a message or automatically redirect users that are denied access.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fsimple-course-timer\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Simple Course Timer\u003C\u002Fa>\u003C\u002Fstrong>: Tracks time spent in all LearnDash courses, lessons, and topics, and detects when a user is idle. Course completion time and total course time are both added to LearnDash reports. Enables blocking access to quizzes until minimum time spent in a course.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fknowledge-base\u002Fsingle-page-courses\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Single Page Courses\u003C\u002Fa>\u003C\u002Fstrong>: Create microlearning courses that have no associated lessons; this moves the Mark Complete button up to the course level.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Uncanny Automator\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you like the Uncanny Toolkit, you’ll love \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Funcanny-automator\u002F?utm_medium=ldtoolkitreadme\" rel=\"ugc\">Uncanny Automator\u003C\u002Fa>! Our free no-code automation plugin connects LearnDash to over 150 plugins and apps plus other WordPress sites. Build personalized learning paths and automated instructional workflows with an easy-to-use interface in minutes. Trusted by over 40,000 WordPress sites to build powerful learning workflows and automations.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>More LearnDash Plugins!\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Uncanny Owl offers a full suite of \u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fplugins\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">plugins that extend the LearnDash platform\u003C\u002Fa> and make it easier to build and manage a great learning experience. Here are a few:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fdownloads\u002Ftin-canny-reporting\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Tin Canny Reporting for LearnDash\u003C\u002Fa>\u003C\u002Fstrong>: Add support for your SCORM and Tin Can modules inside WordPress as well as powerful drill-down LearnDash course and quiz reports.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fdownloads\u002Funcanny-learndash-groups\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Uncanny Groups for LearnDash\u003C\u002Fa>\u003C\u002Fstrong>: Make it easy for your customers and member organizations to manage their learners in the front end, track and manage their progress, and buy buy groups with B2B sales tools.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fdownloads\u002Funcanny-learndash-codes\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Uncanny Codes\u003C\u002Fa>\u003C\u002Fstrong>: An easier way to get your learners into LearnDash groups, courses, and more. Generate codes that can be used by learners to self-enrol into LearnDash groups and courses when they register, make a purchase, or are simply signed in.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.uncannyowl.com\u002Fdownloads\u002Funcanny-continuing-education-credits\u002F?utm_medium=ldtoolkitreadme\" rel=\"nofollow ugc\">Uncanny Continuing Education Credits\u003C\u002Fa>\u003C\u002Fstrong>: Assign credits to LearnDash courses and archive LearnDash course and quiz data to offer recurring training.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Follow Uncanny Owl for updates about our latest LearnDash enhancements on \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Funcannyowl\" rel=\"nofollow ugc\">Twitter\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.facebook.com\u002FUncannyOwl\u002F\" rel=\"nofollow ugc\">Facebook\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002FUncannyOwl\" rel=\"nofollow ugc\">YouTube\u003C\u002Fa>.\u003C\u002Fp>\n","Extend LearnDash with a variety of useful modules that make it even easier to build great learner experiences with LearnDash.",20000,884502,96,105,"2025-12-05T13:49:00.000Z","6.8.5","5.8",[20,54,22,55,23],"elearning","learning","https:\u002F\u002Fwww.uncannyowl.com\u002Funcanny-learndash-toolkit\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Funcanny-learndash-toolkit.3.8.0.2.zip",91,7,"2025-09-22 00:00:00",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":48,"num_ratings":71,"last_updated":72,"tested_up_to":15,"requires_at_least":73,"requires_php":17,"tags":74,"homepage":75,"download_link":76,"security_score":35,"vuln_count":13,"unpatched_count":11,"last_vuln_date":77,"fetched_at":27},"powerpack-for-learndash","PowerPack for LearnDash","1.3.3","Jack K","https:\u002F\u002Fprofiles.wordpress.org\u002Fjack-kitterhing\u002F","\u003Cp>\u003Cstrong>PowerPack for LearnDash\u003C\u002Fstrong> plugin allows you to control various aspects of your LearnDash site without code! Powering up your LearnDash website. Included are 42 modules which are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Custom content to the single course template output\u003C\u002Fli>\n\u003Cli>All access to previously completed course\u003C\u002Fli>\n\u003Cli>Unlimited quiz attempts\u003C\u002Fli>\n\u003Cli>Auto complete course lessons and topics\u003C\u002Fli>\n\u003Cli>Bypass WooCommerce background enrolment to save cron hassle\u003C\u002Fli>\n\u003Cli>Certificate shortcode link to open in a new window\u003C\u002Fli>\n\u003Cli>Focus mode reply title in comments\u003C\u002Fli>\n\u003Cli>Change the text of the Stripe\u002Fcredit card purchase button text\u003C\u002Fli>\n\u003Cli>Change the price type for all courses \u003C\u002Fli>\n\u003Cli>Change the price type for only open courses\u003C\u002Fli>\n\u003Cli>Welcome message in focus mode change to using the first name\u003C\u002Fli>\n\u003Cli>Changing the “complete” button border radius property\u003C\u002Fli>\n\u003Cli>Set course grid custom button text\u003C\u002Fli>\n\u003Cli>Change LearnDash course points to 2 decimal places\u003C\u002Fli>\n\u003Cli>Disable Course Progression\u003C\u002Fli>\n\u003Cli>Disable the Gutenberg\u002FWordPress block editor for all LearnDash custom post types\u003C\u002Fli>\n\u003Cli>Disable video auto-start on mobile devices\u003C\u002Fli>\n\u003Cli>Display a custom message when the ld_course_list shortcode returns no result\u003C\u002Fli>\n\u003Cli>Display course content below prerequisite message\u003C\u002Fli>\n\u003Cli>Allow comments on quiz post type\u003C\u002Fli>\n\u003Cli>Enable course steps in the WordPress menu\u003C\u002Fli>\n\u003Cli>Expand all the lesson sections in Focus Mode\u003C\u002Fli>\n\u003Cli>Disable comments on LearnDash assignments\u003C\u002Fli>\n\u003Cli>Force HTML formatting on Quiz emails\u003C\u002Fli>\n\u003Cli>Force page reload when Restart Quiz button is clicked\u003C\u002Fli>\n\u003Cli>Comment options for assignments and essays\u003C\u002Fli>\n\u003Cli>Hide course points from the user profile\u003C\u002Fli>\n\u003Cli>Hide the open access setting from the course access settings\u003C\u002Fli>\n\u003Cli>Change the outgoing email address of ProPanel emails\u003C\u002Fli>\n\u003Cli>Stop using the_content filter to display LearnDash content\u003C\u002Fli>\n\u003Cli>Quiz continue button\u003C\u002Fli>\n\u003Cli>Redirect the student to a lesson or quiz when they complete the last lesson\u003C\u002Fli>\n\u003Cli>Remove all elements from the WordPress profile\u003C\u002Fli>\n\u003Cli>Remove price section from LearnDash course info bar\u003C\u002Fli>\n\u003Cli>Restrict access to certificates\u003C\u002Fli>\n\u003Cli>Only allow logged in users to access LearnDash sample lessons\u003C\u002Fli>\n\u003Cli>Change sample lesson label\u003C\u002Fli>\n\u003Cli>Show course progression next step link for all users\u003C\u002Fli>\n\u003Cli>Show progression next step link for admin users\u003C\u002Fli>\n\u003Cli>Show user course complete option for admin and group leaders\u003C\u002Fli>\n\u003Cli>Change the take this course button label for closed courses\u003C\u002Fli>\n\u003Cli>Unenroll the user from all common groups when the course access is expired\u003C\u002Fli>\n\u003C\u002Ful>\n","PowerPack for LearnDash offers 42 modules you can activate in a click to power up your LearnDash LMS website. What's included with PowerPack for  &hellip;",1000,27081,5,"2026-01-14T15:21:00.000Z","6.0",[20,54,22,55,23],"https:\u002F\u002Fhonorswp.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpowerpack-for-learndash.1.3.3.zip","2026-02-13 00:00:00",{"slug":79,"name":80,"version":81,"author":82,"author_profile":83,"description":84,"short_description":85,"active_installs":86,"downloaded":87,"rating":12,"num_ratings":88,"last_updated":89,"tested_up_to":15,"requires_at_least":90,"requires_php":17,"tags":91,"homepage":92,"download_link":93,"security_score":12,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"easy-dash-for-learndash","Easy Dash for LearnDash","2.5.0","Luis Rock","https:\u002F\u002Fprofiles.wordpress.org\u002Fmaurolopes\u002F","\u003Cp>An improved (and easy) dashboard for your LearnDash site.\u003C\u002Fp>\n\u003Cp>Main features (free version):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Everything in one page\u003C\u002Fli>\n\u003Cli>Number of students, groups, comments, courses, lessons, topics, quizzes\u003C\u002Fli>\n\u003Cli>Courses enrolls, starts and completions\u003C\u002Fli>\n\u003Cli>Essays and Assignments pending\u003C\u002Fli>\n\u003Cli>Top Courses (by access mode and number of enrolled students)\u003C\u002Fli>\n\u003Cli>Top Groups (by members)\u003C\u002Fli>\n\u003Cli>Most Active Students\u003C\u002Fli>\n\u003Cli>Least Active Students\u003C\u002Fli>\n\u003Cli>Most Commenting Users\u003C\u002Fli>\n\u003Cli>Most Completed Courses\u003C\u002Fli>\n\u003Cli>Most Completed Lessons\u003C\u002Fli>\n\u003Cli>Most Completed Topics\u003C\u002Fli>\n\u003Cli>Most Completed Quizzes\u003C\u002Fli>\n\u003Cli>Courses with more comments\u003C\u002Fli>\n\u003Cli>Courses completed in the same day\u003C\u002Fli>\n\u003Cli>Courses stats over time\u003C\u002Fli>\n\u003Cli>Lessons stats over time\u003C\u002Fli>\n\u003Cli>Topics stats over time\u003C\u002Fli>\n\u003Cli>Quizzes stats over time\u003C\u002Fli>\n\u003Cli>Table with courses completions stats\u003C\u002Fli>\n\u003Cli>Table students activity\u003C\u002Fli>\n\u003Cli>Number of students\u003C\u002Fli>\n\u003Cli>get stats for filtered course\u003C\u002Fli>\n\u003Cli>get stats for filtered user\u003C\u002Fli>\n\u003Cli>get stats for filtered group\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwptrat.com\u002Feasy-dash-for-learndash?from=wporg\" rel=\"nofollow ugc\">Pro\u003C\u002Fa> add-on Premium features (paid version):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Shortcode to place the dash (global or filtered) wherever you like on the frontend of your site\u003C\u002Fli>\n\u003Cli>Shortcode attributes, so you can customize your dash (show or hide widgets)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>NEW: Quick Stats Summary shortcode [easydash_summary] – compact stats for sidebars\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Export (to CSV, Excel or PDF), copy and print table data\u003C\u002Fli>\n\u003Cli>Export CSV file with course\u002Fuser stats for filtered user\u002Fcourse\u002Fgroup\u003C\u002Fli>\n\u003Cli>Define column visibility on the dash tables\u003C\u002Fli>\n\u003Cli>Restrict group stats to leaders\u003C\u002Fli>\n\u003Cli>More premium features to come\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Get the Easy Dash for Learndash Pro add-on at \u003Ca href=\"https:\u002F\u002Fwptrat.com\u002Feasy-dash-for-learndash?from=wporg\" rel=\"nofollow ugc\">WP Trat\u003C\u002Fa>\u003C\u002Fp>\n","Easy Dash for LearnDash: an improved (and easy) dashboard for your LearnDash site.",800,16478,3,"2026-01-16T00:32:00.000Z","5.0",[20,54,22,55,23],"https:\u002F\u002Fwptrat.com\u002Feasy-dash-for-learndash%20\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasy-dash-for-learndash.2.5.0.zip",{"slug":95,"name":96,"version":97,"author":98,"author_profile":99,"description":100,"short_description":101,"active_installs":33,"downloaded":102,"rating":12,"num_ratings":32,"last_updated":103,"tested_up_to":104,"requires_at_least":90,"requires_php":105,"tags":106,"homepage":108,"download_link":109,"security_score":110,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"ld-video-resume","Video Resume for LearnDash","1.1.0.2","E-Learning expert","https:\u002F\u002Fprofiles.wordpress.org\u002Fmanishswamy077\u002F","\u003Cp>This plugin stores the video progress on browser and resumes video on re-visit, it supports Vimeo, YouTube, Wistia and JWPlayer. It works on Learndash lesson and topic pages. It supports multiple video please refer to screenshot 2.\u003C\u002Fp>\n\u003Cp>Video player list:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Vimeo\u003C\u002Fli>\n\u003Cli>Youtube\u003C\u002Fli>\n\u003Cli>Wistia\u003C\u002Fli>\n\u003Cli>JWPlayer (Coming soon)\u003C\u002Fli>\n\u003Cli>VooPlayer (Coming soon)\u003C\u002Fli>\n\u003C\u002Ful>\n","This plugin stores the video progress on browser and resumes video on re-visit, it supports Vimeo, YouTube, Wistia and JWPlayer.",4978,"2023-01-08T15:17:00.000Z","6.1.10","5.6",[107,20,54,22,23],"e-learning","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fld-video-resume.1.1.0.2.zip",85,{"slug":112,"name":113,"version":114,"author":82,"author_profile":83,"description":115,"short_description":116,"active_installs":12,"downloaded":117,"rating":12,"num_ratings":13,"last_updated":118,"tested_up_to":119,"requires_at_least":90,"requires_php":105,"tags":120,"homepage":121,"download_link":122,"security_score":110,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"grid-button-for-learndash","Grid Button for LearnDash","1.0.1","\u003Cp>Grid Button Text for LearnDash** is the ultimate way to define custom texts and styles for courses buttons on the LearnDash Course Grid. You can set texts and styles based on course access mode (open, free, paynow, recurring, closed) mixed with user status (non-logged, non-enrolled, enrolled and completed the course).\u003C\u002Fp>\n\u003Cp>Main features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>define text based on course access mode\u003C\u002Fli>\n\u003Cli>define text based on user status related to each course\u003C\u002Fli>\n\u003Cli>define style based on user status related to each course\u003C\u002Fli>\n\u003Cli>choose to keep default text and style for some courses\u002Fusers\u003C\u002Fli>\n\u003C\u002Ful>\n","Grid Button Text for LearnDash is the ultimate way to define custom texts and styles for courses buttons on the LearnDash Course Grid.",3564,"2021-08-05T19:37:00.000Z","5.7.15",[20,54,22,55,23],"https:\u002F\u002Fwptrat.com\u002Fgrid-button-for-learndash\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgrid-button-for-learndash.1.0.1.zip",{"attackSurface":124,"codeSignals":444,"taintFlows":460,"riskAssessment":574,"analyzedAt":584},{"hooks":125,"ajaxHandlers":350,"restRoutes":390,"shortcodes":432,"cronEvents":439,"entryPointCount":443,"unprotectedCount":13},[126,132,135,139,145,148,152,156,158,160,162,165,167,169,170,171,173,174,178,181,184,188,192,194,196,199,201,204,209,213,218,222,225,228,231,234,238,241,245,249,254,259,263,266,268,271,276,280,284,288,291,294,297,299,300,301,302,304,305,307,310,313,317,319,321,325,330,332,334,336,340,343,347],{"type":127,"name":128,"callback":129,"file":130,"line":131},"action","admin_init","handle_actions","includes\u002Fadmin\u002Fclass-ppa-admin-assignments.php",45,{"type":127,"name":133,"callback":133,"file":130,"line":134},"admin_notices",46,{"type":127,"name":136,"callback":137,"file":130,"line":138},"current_screen","maybe_add_screen_options",49,{"type":140,"name":141,"callback":142,"priority":143,"file":130,"line":144},"filter","set_screen_option_pressprimer_assignment_assignments_per_page","set_screen_option",10,52,{"type":140,"name":146,"callback":142,"priority":143,"file":130,"line":147},"set-screen-option",115,{"type":127,"name":149,"callback":150,"file":151,"line":144},"admin_post_pressprimer_assignment_save_category","handle_save","includes\u002Fadmin\u002Fclass-ppa-admin-categories.php",{"type":127,"name":153,"callback":154,"file":151,"line":155},"admin_post_pressprimer_assignment_delete_category","handle_delete",53,{"type":127,"name":133,"callback":133,"file":151,"line":157},54,{"type":127,"name":133,"callback":133,"file":159,"line":134},"includes\u002Fadmin\u002Fclass-ppa-admin-grading.php",{"type":127,"name":136,"callback":137,"file":159,"line":161},47,{"type":140,"name":163,"callback":142,"priority":143,"file":159,"line":164},"set_screen_option_pressprimer_assignment_grading_per_page",48,{"type":140,"name":146,"callback":142,"priority":143,"file":159,"line":166},107,{"type":127,"name":128,"callback":129,"file":168,"line":131},"includes\u002Fadmin\u002Fclass-ppa-admin-submissions.php",{"type":127,"name":133,"callback":133,"file":168,"line":134},{"type":127,"name":136,"callback":137,"file":168,"line":161},{"type":140,"name":172,"callback":142,"priority":143,"file":168,"line":164},"set_screen_option_pressprimer_assignment_submissions_per_page",{"type":140,"name":146,"callback":142,"priority":143,"file":168,"line":166},{"type":127,"name":175,"callback":176,"file":177,"line":161},"admin_menu","register_menus","includes\u002Fadmin\u002Fclass-ppa-admin.php",{"type":127,"name":175,"callback":179,"priority":180,"file":177,"line":164},"add_grading_badge",999,{"type":127,"name":182,"callback":183,"file":177,"line":138},"admin_enqueue_scripts","enqueue_assets",{"type":127,"name":182,"callback":185,"file":186,"line":187},"maybe_enqueue_assets","includes\u002Fadmin\u002Fclass-ppa-onboarding.php",104,{"type":127,"name":189,"callback":190,"file":191,"line":138},"rest_api_init","register_routes","includes\u002Fapi\u002Fclass-ppa-rest-assignments.php",{"type":127,"name":189,"callback":190,"file":193,"line":138},"includes\u002Fapi\u002Fclass-ppa-rest-categories.php",{"type":127,"name":189,"callback":190,"file":195,"line":164},"includes\u002Fapi\u002Fclass-ppa-rest-grading-queue.php",{"type":127,"name":189,"callback":190,"file":197,"line":198},"includes\u002Fapi\u002Fclass-ppa-rest-settings.php",35,{"type":127,"name":189,"callback":190,"file":200,"line":164},"includes\u002Fapi\u002Fclass-ppa-rest-statistics.php",{"type":127,"name":189,"callback":190,"file":202,"line":203},"includes\u002Fapi\u002Fclass-ppa-rest-submissions.php",65,{"type":140,"name":205,"callback":206,"priority":143,"file":207,"line":208},"block_categories_all","register_block_category","includes\u002Fblocks\u002Fclass-ppa-blocks.php",33,{"type":127,"name":210,"callback":211,"file":207,"line":212},"init","register_blocks",36,{"type":127,"name":214,"callback":215,"file":216,"line":217},"pressprimer_assignment_extract_pdf_text","process_scheduled_extraction","includes\u002Fclass-ppa-plugin.php",161,{"type":127,"name":219,"callback":220,"file":216,"line":221},"pressprimer_assignment_submission_submitted","clear_all_caches",195,{"type":127,"name":223,"callback":220,"file":216,"line":224},"pressprimer_assignment_submission_graded",201,{"type":127,"name":226,"callback":220,"file":216,"line":227},"pressprimer_assignment_submission_returned",207,{"type":127,"name":229,"callback":220,"file":216,"line":230},"pressprimer_assignment_submission_deleted",213,{"type":127,"name":232,"callback":220,"file":216,"line":233},"pressprimer_assignment_deleted",219,{"type":140,"name":235,"callback":236,"file":237,"line":131},"wp_privacy_personal_data_exporters","register_exporters","includes\u002Fclass-ppa-privacy.php",{"type":140,"name":239,"callback":240,"file":237,"line":134},"wp_privacy_personal_data_erasers","register_erasers",{"type":127,"name":210,"callback":242,"file":243,"line":244},"handle_file_request","includes\u002Ffrontend\u002Fclass-ppa-frontend.php",56,{"type":127,"name":210,"callback":246,"file":247,"line":248},"register_shortcodes","includes\u002Ffrontend\u002Fclass-ppa-shortcodes.php",43,{"type":140,"name":250,"callback":251,"priority":143,"file":252,"line":253},"heartbeat_received","handle_heartbeat","includes\u002Ffrontend\u002Fclass-ppa-text-handler.php",38,{"type":127,"name":255,"callback":256,"file":257,"line":258},"add_meta_boxes","register_meta_boxes","includes\u002Fintegrations\u002Fclass-ppa-learndash.php",70,{"type":127,"name":260,"callback":261,"priority":143,"file":257,"line":262},"save_post","save_meta_box",71,{"type":127,"name":210,"callback":264,"file":257,"line":265},"register_meta_fields",77,{"type":127,"name":189,"callback":264,"file":257,"line":267},78,{"type":127,"name":269,"callback":269,"file":257,"line":270},"enqueue_block_editor_assets",79,{"type":140,"name":272,"callback":273,"priority":274,"file":257,"line":275},"the_content","maybe_display_assignment",20,82,{"type":140,"name":277,"callback":278,"priority":143,"file":257,"line":279},"learndash_mark_complete_button","maybe_hide_mark_complete",83,{"type":127,"name":281,"callback":282,"priority":143,"file":257,"line":283},"pressprimer_assignment_submission_passed","handle_assignment_passed",86,{"type":140,"name":285,"callback":286,"priority":143,"file":257,"line":287},"learndash-lesson-can-complete","maybe_prevent_lesson_completion",89,{"type":127,"name":189,"callback":289,"file":257,"line":290},"register_rest_routes",92,{"type":127,"name":128,"callback":292,"priority":274,"file":257,"line":293},"ensure_instructor_capabilities",99,{"type":140,"name":295,"callback":296,"priority":143,"file":257,"line":12},"pressprimer_assignment_user_has_teacher_capability","check_instructor_capability",{"type":127,"name":255,"callback":256,"file":298,"line":267},"includes\u002Fintegrations\u002Fclass-ppa-tutorlms.php",{"type":127,"name":260,"callback":261,"priority":143,"file":298,"line":270},{"type":127,"name":210,"callback":264,"file":298,"line":110},{"type":127,"name":269,"callback":269,"file":298,"line":283},{"type":127,"name":182,"callback":303,"file":298,"line":287},"enqueue_course_builder_assets",{"type":127,"name":128,"callback":292,"priority":274,"file":298,"line":48},{"type":140,"name":295,"callback":296,"priority":143,"file":298,"line":306},97,{"type":140,"name":272,"callback":308,"priority":274,"file":298,"line":309},"append_assignment_to_lesson_content",102,{"type":140,"name":311,"callback":312,"priority":143,"file":298,"line":166},"tutor_has_lesson_content","force_lesson_content_for_assignment",{"type":140,"name":314,"callback":315,"file":298,"line":316},"tutor_lesson\u002Fsingle\u002Fcomplete_form","maybe_hide_complete_button",110,{"type":127,"name":281,"callback":282,"priority":143,"file":298,"line":318},113,{"type":127,"name":189,"callback":289,"file":298,"line":320},116,{"type":127,"name":322,"callback":323,"file":324,"line":34},"automator_add_integration","add_integration","includes\u002Fintegrations\u002Funcanny-automator\u002Fclass-ppa-automator-loader.php",{"type":127,"name":326,"callback":327,"priority":32,"file":328,"line":329},"pressprimer_assignment_submission_failed","anonymous","includes\u002Fintegrations\u002Funcanny-automator\u002Ftriggers\u002Fclass-ppa-assignment-failed.php",58,{"type":127,"name":223,"callback":327,"priority":32,"file":331,"line":329},"includes\u002Fintegrations\u002Funcanny-automator\u002Ftriggers\u002Fclass-ppa-assignment-graded.php",{"type":127,"name":281,"callback":327,"priority":32,"file":333,"line":329},"includes\u002Fintegrations\u002Funcanny-automator\u002Ftriggers\u002Fclass-ppa-assignment-passed.php",{"type":127,"name":219,"callback":327,"priority":32,"file":335,"line":329},"includes\u002Fintegrations\u002Funcanny-automator\u002Ftriggers\u002Fclass-ppa-assignment-submitted.php",{"type":127,"name":219,"callback":337,"priority":143,"file":338,"line":339},"on_submission_submitted","includes\u002Fservices\u002Fclass-ppa-email-service.php",921,{"type":127,"name":226,"callback":341,"priority":143,"file":338,"line":342},"on_submission_returned",924,{"type":127,"name":344,"callback":345,"priority":143,"file":346,"line":138},"wp_initialize_site","activate_new_site","pressprimer-assignment.php",{"type":127,"name":210,"callback":348,"priority":11,"file":346,"line":349},"pressprimer_assignment_init",64,[351,357,360,364,369,372,375,378,381,384,388],{"action":352,"nopriv":353,"callback":354,"hasNonce":355,"hasCapCheck":355,"file":356,"line":144},"pressprimer_assignment_repair_database_tables",false,"ajax_repair_database_tables",true,"includes\u002Fadmin\u002Fclass-ppa-admin-settings.php",{"action":358,"nopriv":353,"callback":359,"hasNonce":355,"hasCapCheck":355,"file":186,"line":309},"pressprimer_assignment_onboarding_progress","handle_progress_ajax",{"action":361,"nopriv":353,"callback":362,"hasNonce":355,"hasCapCheck":355,"file":186,"line":363},"pressprimer_assignment_get_onboarding_state","handle_get_state_ajax",103,{"action":365,"nopriv":353,"callback":366,"hasNonce":355,"hasCapCheck":355,"file":367,"line":368},"pressprimer_assignment_upload_file","handle_upload","includes\u002Ffrontend\u002Fclass-ppa-submission-handler.php",44,{"action":370,"nopriv":353,"callback":371,"hasNonce":355,"hasCapCheck":353,"file":367,"line":131},"pressprimer_assignment_remove_file","handle_remove",{"action":373,"nopriv":353,"callback":374,"hasNonce":355,"hasCapCheck":355,"file":367,"line":134},"pressprimer_assignment_submit_assignment","handle_submit",{"action":376,"nopriv":353,"callback":377,"hasNonce":355,"hasCapCheck":353,"file":367,"line":161},"pressprimer_assignment_delete_submission","handle_delete_submission",{"action":379,"nopriv":353,"callback":380,"hasNonce":355,"hasCapCheck":353,"file":252,"line":212},"pressprimer_assignment_save_text_draft","handle_save_draft",{"action":382,"nopriv":353,"callback":374,"hasNonce":355,"hasCapCheck":355,"file":252,"line":383},"pressprimer_assignment_submit_text_assignment",37,{"action":385,"nopriv":353,"callback":386,"hasNonce":355,"hasCapCheck":355,"file":257,"line":387},"pressprimer_assignment_search_assignments_learndash","ajax_search_assignments",74,{"action":389,"nopriv":353,"callback":386,"hasNonce":355,"hasCapCheck":355,"file":298,"line":275},"pressprimer_assignment_search_assignments_tutorlms",[391,396,402,408,413,419,423,427],{"namespace":392,"route":393,"methods":394,"callback":327,"permissionCallback":26,"file":197,"line":368},"ppa\u002Fv1","\u002Fsettings",[395],"GET",{"namespace":392,"route":397,"methods":398,"callback":399,"permissionCallback":400,"file":197,"line":401},"\u002Femail\u002Ftest",[395],"send_test_email","check_permission",61,{"namespace":392,"route":403,"methods":404,"callback":405,"permissionCallback":406,"file":257,"line":407},"\u002Flearndash\u002Fassignments\u002Fsearch",[395],"rest_search_assignments","closure",992,{"namespace":392,"route":409,"methods":410,"callback":411,"permissionCallback":406,"file":257,"line":412},"\u002Flearndash\u002Fstatus",[395],"rest_get_status",1014,{"namespace":392,"route":414,"methods":415,"callback":417,"permissionCallback":406,"file":257,"line":418},"\u002Flearndash\u002Fsettings",[416],"POST","rest_save_settings",1026,{"namespace":392,"route":420,"methods":421,"callback":405,"permissionCallback":406,"file":298,"line":422},"\u002Ftutorlms\u002Fassignments\u002Fsearch",[395],1174,{"namespace":392,"route":424,"methods":425,"callback":411,"permissionCallback":406,"file":298,"line":426},"\u002Ftutorlms\u002Fstatus",[395],1196,{"namespace":392,"route":428,"methods":429,"callback":430,"permissionCallback":406,"file":298,"line":431},"\u002Ftutorlms\u002Flesson-assignment",[416],"rest_save_lesson_assignment",1208,[433,436],{"tag":434,"callback":435,"file":247,"line":144},"pressprimer_assignment","render_assignment",{"tag":437,"callback":438,"file":247,"line":155},"pressprimer_assignment_my_submissions","render_my_submissions",[440],{"hook":214,"callback":214,"file":441,"line":442},"includes\u002Fservices\u002Fclass-ppa-pdf-service.php",163,21,{"dangerousFunctions":445,"sqlUsage":450,"outputEscaping":453,"fileOperations":456,"externalRequests":11,"nonceChecks":457,"capabilityChecks":458,"bundledLibraries":459},[446],{"fn":447,"file":356,"line":448,"context":449},"exec",376,"$which_result = @exec( 'which pdftotext 2>\u002Fdev\u002Fnull' );",{"prepared":451,"raw":11,"locations":452},242,[],{"escaped":454,"rawEcho":11,"locations":455},857,[],6,23,90,[],[461,484,501,515,525,538,551,561],{"entryPoint":462,"graph":463,"unsanitizedCount":13,"severity":483},"render (includes\u002Fadmin\u002Fclass-ppa-admin-categories.php:86)",{"nodes":464,"edges":480},[465,470,474],{"id":466,"type":467,"label":468,"file":151,"line":469},"n0","source","$_GET",108,{"id":471,"type":472,"label":473,"file":151,"line":469},"n1","transform","→ render_edit_form()",{"id":475,"type":476,"label":477,"file":151,"line":478,"wp_function":479},"n2","sink","echo() [XSS]",366,"echo",[481,482],{"from":466,"to":471,"sanitized":353},{"from":471,"to":475,"sanitized":353},"medium",{"entryPoint":485,"graph":486,"unsanitizedCount":13,"severity":483},"\u003Cclass-ppa-admin-categories> (includes\u002Fadmin\u002Fclass-ppa-admin-categories.php:0)",{"nodes":487,"edges":497},[488,490,492,493,495],{"id":466,"type":467,"label":489,"file":151,"line":306},"$_GET (x6)",{"id":471,"type":476,"label":477,"file":151,"line":491,"wp_function":479},278,{"id":475,"type":467,"label":468,"file":151,"line":469},{"id":494,"type":472,"label":473,"file":151,"line":469},"n3",{"id":496,"type":476,"label":477,"file":151,"line":478,"wp_function":479},"n4",[498,499,500],{"from":466,"to":471,"sanitized":355},{"from":475,"to":494,"sanitized":353},{"from":494,"to":496,"sanitized":353},{"entryPoint":502,"graph":503,"unsanitizedCount":11,"severity":514},"\u003Cclass-ppa-submission-handler> (includes\u002Ffrontend\u002Fclass-ppa-submission-handler.php:0)",{"nodes":504,"edges":512},[505,508],{"id":466,"type":467,"label":506,"file":367,"line":507},"$_POST (x2)",415,{"id":471,"type":476,"label":509,"file":367,"line":510,"wp_function":511},"get_var() [SQLi]",838,"get_var",[513],{"from":466,"to":471,"sanitized":355},"low",{"entryPoint":516,"graph":517,"unsanitizedCount":11,"severity":514},"\u003Cclass-ppa-text-handler> (includes\u002Ffrontend\u002Fclass-ppa-text-handler.php:0)",{"nodes":518,"edges":523},[519,521],{"id":466,"type":467,"label":506,"file":252,"line":520},264,{"id":471,"type":476,"label":509,"file":252,"line":522,"wp_function":511},580,[524],{"from":466,"to":471,"sanitized":355},{"entryPoint":526,"graph":527,"unsanitizedCount":11,"severity":514},"ajax_search_assignments (includes\u002Fintegrations\u002Fclass-ppa-learndash.php:847)",{"nodes":528,"edges":536},[529,532],{"id":466,"type":467,"label":530,"file":257,"line":531},"$_POST",878,{"id":471,"type":476,"label":533,"file":257,"line":534,"wp_function":535},"get_results() [SQLi]",885,"get_results",[537],{"from":466,"to":471,"sanitized":355},{"entryPoint":539,"graph":540,"unsanitizedCount":11,"severity":514},"\u003Cclass-ppa-learndash> (includes\u002Fintegrations\u002Fclass-ppa-learndash.php:0)",{"nodes":541,"edges":548},[542,544,546,547],{"id":466,"type":467,"label":530,"file":257,"line":543},418,{"id":471,"type":476,"label":509,"file":257,"line":545,"wp_function":511},740,{"id":475,"type":467,"label":506,"file":257,"line":531},{"id":494,"type":476,"label":533,"file":257,"line":534,"wp_function":535},[549,550],{"from":466,"to":471,"sanitized":355},{"from":475,"to":494,"sanitized":355},{"entryPoint":552,"graph":553,"unsanitizedCount":11,"severity":514},"ajax_search_assignments (includes\u002Fintegrations\u002Fclass-ppa-tutorlms.php:633)",{"nodes":554,"edges":559},[555,557],{"id":466,"type":467,"label":530,"file":298,"line":556},663,{"id":471,"type":476,"label":533,"file":298,"line":558,"wp_function":535},670,[560],{"from":466,"to":471,"sanitized":355},{"entryPoint":562,"graph":563,"unsanitizedCount":11,"severity":514},"\u003Cclass-ppa-tutorlms> (includes\u002Fintegrations\u002Fclass-ppa-tutorlms.php:0)",{"nodes":564,"edges":571},[565,566,567,569],{"id":466,"type":467,"label":506,"file":298,"line":556},{"id":471,"type":476,"label":533,"file":298,"line":558,"wp_function":535},{"id":475,"type":467,"label":530,"file":298,"line":568},437,{"id":494,"type":476,"label":509,"file":298,"line":570,"wp_function":511},820,[572,573],{"from":466,"to":471,"sanitized":355},{"from":475,"to":494,"sanitized":355},{"summary":575,"deductions":576},"The 'pressprimer-assignment' v1.0.0 plugin exhibits a generally strong security posture, with many good practices in place. The plugin demonstrates commendable adherence to secure coding standards by utilizing prepared statements for all SQL queries and properly escaping all output. The presence of a significant number of nonce and capability checks further strengthens its defense against common WordPress vulnerabilities. However, a few areas warrant attention. The presence of unsanitized paths in the taint analysis suggests a potential risk of path traversal vulnerabilities, even though no critical or high-severity flows were identified in this specific analysis. Additionally, the 'exec' function is a powerful and potentially dangerous function that, if misused, could lead to remote code execution. While the analysis doesn't indicate a direct vulnerability related to 'exec' in this version, its presence requires careful monitoring in future updates.\n\nThe plugin's vulnerability history is currently clean, with no recorded CVEs. This is a positive indicator, suggesting that the developers have been diligent in maintaining security. The absence of past vulnerabilities, coupled with the robust coding practices observed, points to a development team that is likely aware of and attempts to mitigate security risks. However, the presence of the 'exec' function and the unsanitized paths in taint analysis are weaknesses that, if exploited in conjunction with other factors or in future versions, could introduce significant risk. The limited attack surface and the majority of entry points being protected are strengths that mitigate some of these concerns.",[577,579,582],{"reason":578,"points":143},"Unsanitized paths in taint analysis",{"reason":580,"points":581},"Use of dangerous 'exec' function",8,{"reason":583,"points":71},"REST API route without permission callback","2026-04-16T14:24:37.385Z",{"wat":586,"direct":595},{"assetPaths":587,"generatorPatterns":590,"scriptPaths":591,"versionParams":592},[588,589],"\u002Fwp-content\u002Fplugins\u002Fpressprimer-assignment\u002Fassets\u002Fcss\u002Fassignments.css","\u002Fwp-content\u002Fplugins\u002Fpressprimer-assignment\u002Fassets\u002Fjs\u002Fassignments.js",[],[589],[593,594],"pressprimer-assignment\u002Fassets\u002Fcss\u002Fassignments.css?ver=","pressprimer-assignment\u002Fassets\u002Fjs\u002Fassignments.js?ver=",{"cssClasses":596,"htmlComments":597,"htmlAttributes":598,"restEndpoints":599,"jsGlobals":600,"shortcodeOutput":601},[],[],[],[],[],[],{"error":355,"url":603,"statusCode":604,"statusMessage":605,"message":605},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fpressprimer-assignment\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":13,"versions":607},[608],{"version":6,"download_url":25,"svn_tag_url":609,"released_at":26,"has_diff":353,"diff_files_changed":610,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":611,"is_current":355},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpressprimer-assignment\u002Ftags\u002F1.0.0\u002F",[],[]]