[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f8PvJDgIWqs8riY3oQRvtUV5ovDRmmmhtKKSEqlpdV1o":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":22,"download_link":23,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":37,"analysis":143,"fingerprints":535},"action-scheduler","Action Scheduler","3.9.3","Automattic","https:\u002F\u002Fprofiles.wordpress.org\u002Fautomattic\u002F","\u003Cp>Action Scheduler is a scalable, traceable job queue for background processing large sets of actions in WordPress. It’s specially designed to be distributed in WordPress plugins.\u003C\u002Fp>\n\u003Cp>Action Scheduler works by triggering an action hook to run at some time in the future. Each hook can be scheduled with unique data, to allow callbacks to perform operations on that data. The hook can also be scheduled to run on one or more occasions.\u003C\u002Fp>\n\u003Cp>Think of it like an extension to \u003Ccode>do_action()\u003C\u002Fcode> which adds the ability to delay and repeat a hook.\u003C\u002Fp>\n\u003Ch3>Battle-Tested Background Processing\u003C\u002Fh3>\n\u003Cp>Every month, Action Scheduler processes millions of payments for \u003Ca href=\"https:\u002F\u002Fwoocommerce.com\u002Fproducts\u002Fwoocommerce-subscriptions\u002F\" rel=\"nofollow ugc\">Subscriptions\u003C\u002Fa>, webhooks for \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"ugc\">WooCommerce\u003C\u002Fa>, as well as emails and other events for a range of other plugins.\u003C\u002Fp>\n\u003Cp>It’s been seen on live sites processing queues in excess of 50,000 jobs and doing resource intensive operations, like processing payments and creating orders, at a sustained rate of over 10,000 \u002F hour without negatively impacting normal site operations.\u003C\u002Fp>\n\u003Cp>This is all on infrastructure and WordPress sites outside the control of the plugin author.\u003C\u002Fp>\n\u003Cp>If your plugin needs background processing, especially of large sets of tasks, Action Scheduler can help.\u003C\u002Fp>\n\u003Ch3>Learn More\u003C\u002Fh3>\n\u003Cp>To learn more about how Action Scheduler works, and how to use it in your plugin, check out the docs on \u003Ca href=\"https:\u002F\u002Factionscheduler.org\" rel=\"nofollow ugc\">ActionScheduler.org\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>There you will find:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Factionscheduler.org\u002Fusage\u002F\" rel=\"nofollow ugc\">Usage guide\u003C\u002Fa>: instructions on installing and using Action Scheduler\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Factionscheduler.org\u002Fwp-cli\u002F\" rel=\"nofollow ugc\">WP CLI guide\u003C\u002Fa>: instructions on running Action Scheduler at scale via WP CLI\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Factionscheduler.org\u002Fapi\u002F\" rel=\"nofollow ugc\">API Reference\u003C\u002Fa>: complete reference guide for all API functions\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Factionscheduler.org\u002Fadmin\u002F\" rel=\"nofollow ugc\">Administration Guide\u003C\u002Fa>: guide to managing scheduled actions via the administration screen\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Factionscheduler.org\u002Fperf\u002F\" rel=\"nofollow ugc\">Guide to Background Processing at Scale\u003C\u002Fa>: instructions for running Action Scheduler at scale via the default WP Cron queue runner\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Action Scheduler is developed and maintained by \u003Ca href=\"http:\u002F\u002Fautomattic.com\u002F\" rel=\"nofollow ugc\">Automattic\u003C\u002Fa> with significant early development completed by \u003Ca href=\"https:\u002F\u002Fflightless.us\u002F\" rel=\"nofollow ugc\">Flightless\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Collaboration is cool. We’d love to work with you to improve Action Scheduler. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwoocommerce\u002Faction-scheduler\u002Fpulls\" rel=\"nofollow ugc\">Pull Requests\u003C\u002Fa> welcome.\u003C\u002Fp>\n","Action Scheduler - Job Queue for WordPress",20000,591908,70,13,"2025-07-15T09:33:00.000Z","6.8.5","6.5","7.2",[20,21],"cron","scheduler","https:\u002F\u002Factionscheduler.org","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faction-scheduler.3.9.3.zip",100,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"automattic",213,19158100,92,1384,73,"2026-04-03T17:38:23.049Z",[38,61,85,106,126],{"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":53,"tags":54,"homepage":59,"download_link":60,"security_score":33,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"cleanup-action-scheduler","Cleanup Action Scheduler","1.2.4","laurencebahiirwa","https:\u002F\u002Fprofiles.wordpress.org\u002Flaurencebahiirwa\u002F","\u003Cp>Delete Action Scheduler Events to avoid having large database tables.\u003C\u002Fp>\n\u003Ch3>Features:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Delete button to remove all actions [Completed, Failed]. See screenshots for example.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>1.2.4\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Update: FS SDK to latest version.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>1.2.1\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Update: FS SDK to add new garbage collector and fix PHP 8+ errors.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>1.2.0\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Important bug fixes.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>1.1.0\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Added new enhancement settings to allow better usage of the Action Scheduler plugin performance.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>1.0.0\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Initial Plugin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Ch4>Free Plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Add delete icons for each state in admin area including pending actions..\u003C\u002Fli>\n\u003Cli>Add option to change default cleanup for the Action Scheduler.\u003C\u002Fli>\n\u003Cli>Advanced settings to allow better usage of the Action Scheduler plugin performance.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Premium Plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>All Free plugin features plus:\u003C\u002Fli>\n\u003Cli>Add WPCLI functionality to delete states.\u003C\u002Fli>\n\u003Cli>Deletion of pending actions.\u003C\u002Fli>\n\u003Cli>Add automated cleanup for selected action states.\u003C\u002Fli>\n\u003C\u002Ful>\n","Delete Action Scheduler Events to avoid having large database tables.",2000,17431,64,6,"2025-02-06T06:35:00.000Z","6.7.5","4.9","7.4",[55,56,57,21,58],"action","cleanup","cron-job","woocommerce","https:\u002F\u002Fmediauganda.com\u002Fsoftware\u002Fcleanup-action-scheduler","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcleanup-action-scheduler.1.2.4.zip",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":46,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":75,"tags":76,"homepage":80,"download_link":81,"security_score":82,"vuln_count":83,"unpatched_count":25,"last_vuln_date":84,"fetched_at":27},"leira-cron-jobs","Cron Jobs","1.2.12","Ariel","https:\u002F\u002Fprofiles.wordpress.org\u002Farielhr1987\u002F","\u003Cp>\u003Cstrong>Cron Jobs\u003C\u002Fstrong> is a lightweight yet powerful plugin that simplifies the management of your WordPress cron events.\u003C\u002Fp>\n\u003Cp>With this tool, you can quickly view, run, and modify your scheduled tasks (cron jobs) without writing code. It’s ideal for developers, site managers, or anyone needing better control over WordPress’s background processes.\u003C\u002Fp>\n\u003Cp>Key features include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Run or bulk run selected cron jobs instantly.\u003C\u002Fli>\n\u003Cli>Edit cron job schedule, next run time, and arguments directly from the list view.\u003C\u002Fli>\n\u003Cli>Customize visible columns and preferences via the native “Screen Options” panel.\u003C\u002Fli>\n\u003Cli>Access help and documentation to better understand how WordPress cron works.\u003C\u002Fli>\n\u003C\u002Ful>\n","Easily manage and monitor your WordPress cron jobs from a clean, intuitive interface.",30369,94,3,"2025-12-19T00:50:00.000Z","6.9.4","4.1","5.4",[77,78,20,21,79],"admin-tools","automation","wp-cron","https:\u002F\u002Fgithub.com\u002Farielhr1987\u002Fleira-cron-jobs","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fleira-cron-jobs.1.2.12.zip",99,1,"2024-09-12 00:00:00",{"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":98,"requires_at_least":99,"requires_php":100,"tags":101,"homepage":100,"download_link":104,"security_score":105,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"cronjob-scheduler","Cronjob Scheduler","1.40.1","chrispage1","https:\u002F\u002Fprofiles.wordpress.org\u002Fchrispage1\u002F","\u003Ch4>Cronjob Scheduler\u003C\u002Fh4>\n\u003Cp>Cronjob Scheduler allows you to create custom WordPress tasks that are automatically triggered on a schedule you define.\u003Cbr \u002F>\nCronjob Scheduler does not overwrite WordPress’s existing scheduling functionality, which it and plugins use for a number of internal tasks.\u003Cbr \u002F>\nInstead, it simply replaces the standard WordPress mechanism which triggers them with a more reliable one from your operating system.\u003Cbr \u002F>\nIn addition, it helps improve your site speed by making the server handle recurring tasks, rather than unsuspecting visitors…\u003C\u002Fp>\n\u003Cp>The motivation behind building this plugin was out of frustration with other similar plugins that claim to do the same thing.\u003C\u002Fp>\n\u003Cp>Cronjob Scheduler allows you to run frequent tasks reliably and timely without anyone having to visit your site at all. All you need is at least 1 action and a Unix Crontab schedule!\u003C\u002Fp>\n\u003Ch4>About\u003C\u002Fh4>\n\u003Cp>This plugin was designed and built by Motocom. It is designed to make easy work of creating and managing custom cron jobs. If this plugin has been helpful for you, then please donate to keep our WordPress plugin projects running!\u003C\u002Fp>\n","Cronjob Scheduler allows you to automate regular tasks and actions within your WordPress installation!",1000,41402,88,14,"2020-05-26T12:02:00.000Z","5.4.19","3.5.1","",[78,20,102,21,103],"cronjob","task","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcronjob-scheduler.1.40.1.zip",85,{"slug":107,"name":108,"version":109,"author":110,"author_profile":111,"description":112,"short_description":113,"active_installs":93,"downloaded":114,"rating":115,"num_ratings":116,"last_updated":117,"tested_up_to":73,"requires_at_least":118,"requires_php":53,"tags":119,"homepage":123,"download_link":124,"security_score":82,"vuln_count":116,"unpatched_count":25,"last_vuln_date":125,"fetched_at":27},"get-url-cron","Cron Setup and Monitor – Get URL Cron","1.5.4","berkux","https:\u002F\u002Fprofiles.wordpress.org\u002Fberkux\u002F","\u003Cp>Effortlessly define and manage cron jobs with execution URLs and WP-Shortcodes. The plugin monitors cron jobs, retries failed executions as needed, and sends status updates via email.\u003C\u002Fp>\n\u003Cp>With “Cron Setup and Monitor – Get URL Cron” you can:\u003Cbr \u002F>\n* Add, edit, and delete cron jobs to request HTTP URLs or WordPress shortcodes at defined times with various intervals.\u003Cbr \u002F>\n* Verify the retrieved result by checking for a required string or JSON field to ensure the HTTP URL or shortcode request was successful.\u003Cbr \u002F>\n* Retry the HTTP URL or shortcode request multiple times in case of failures.\u003Cbr \u002F>\n*  Display all cron jobs in the WordPress installation, including those independent of this plugin.\u003Cbr \u002F>\n* Manually execute cron jobs.\u003Cbr \u002F>\n* Log requests and show OK or FAIL status: The first log entry records what should happen (“try”). The second log entry shows the success of the request.\u003Cbr \u002F>\n* Send emails for each HTTP URL or shortcode request, including the start of the attempt and the result of the request.\u003Cbr \u002F>\n* Option to send emails only on failure.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Go to ‘Basic Settings’ in the plugin menu to set basic settings (like E-Mailadress for Statusmessages) \u003C\u002Fli>\n\u003Cli>Go to ‘Set CronJobs’ to manage the cron events: Set URL or WordPress-Shortcode, interval, startdate etc.\u003C\u002Fli>\n\u003Cli>Store the defined CronJobs\u003C\u002Fli>\n\u003Cli>Manually execute a Cronjob by clicking on “execute job”\u003C\u002Fli>\n\u003Cli>Check plugin-menu ‘Show CronJobs’: There the scheduled CronJobs “geturlcron_event-” should be listed \u003C\u002Fli>\n\u003Cli>Check plugin-menu ‘Show Logs’: There should be at least one entry for the “try”. And if the CronJob has been finished a entry for the result (“FAIL” or “OK”)\u003C\u002Fli>\n\u003Cli>If a E-Mailadress is defined, two E-Mails are sent for trying and result.\u003C\u002Fli>\n\u003C\u002Fol>\n","Manage cron jobs, monitor tasks, retry failures, and send email updates",29956,60,2,"2025-12-04T20:52:00.000Z","3.0",[120,121,20,122,21],"alarm","check","monitor","https:\u002F\u002Fjson-content-importer.com\u002Fgeturlcron","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fget-url-cron.1.5.4.zip","2023-02-15 00:00:00",{"slug":127,"name":128,"version":129,"author":130,"author_profile":131,"description":132,"short_description":133,"active_installs":134,"downloaded":135,"rating":24,"num_ratings":116,"last_updated":136,"tested_up_to":137,"requires_at_least":118,"requires_php":100,"tags":138,"homepage":141,"download_link":142,"security_score":105,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"easycron","Easycron","1.3.2","EasyCron","https:\u002F\u002Fprofiles.wordpress.org\u002Feasycron\u002F","\u003Cp>EasyCron (https:\u002F\u002Fwww.easycron.com) provides reliable online cron job service worldwide. Its insanely easy-to-use webcron have helped thousands of users who’re fastidious on task scheduling perfectly configure cron jobs.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Support Cron expression, and the year field (\u003Ca href=\"https:\u002F\u002Fwww.easycron.com\u002Ffaq\u002FWhat-cron-expression-does-easycron-support\" rel=\"nofollow ugc\">cron expression guide\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Email otifications\u003C\u002Fli>\n\u003Cli>Slack notifications\u003C\u002Fli>\n\u003Cli>Webhook callbacks\u003C\u002Fli>\n\u003Cli>Cron job execution logs\u003C\u002Fli>\n\u003Cli>Time prediction of executions.\u003C\u002Fli>\n\u003Cli>Customize schedule timezone\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Questions & Answers\u003C\u002Fh3>\n\u003Ch4>Is EasyCron free?\u003C\u002Fh4>\n\u003Cp>EasyCron offers a free forever plan (you just need to go to https:\u002F\u002Fwww.easycron.com\u002Fuser\u002Fplan to renew the free plan monthly).\u003Cbr \u002F>\nYou may also upgrade to a premium plan which has some advanced features and will automatically get renewed yearly.\u003C\u002Fp>\n","Utilize EasyCron's API to configure a cron job that will trigger WordPress's cron script (wp-cron.php) periodically.",200,13550,"2023-04-29T20:41:00.000Z","6.2.9",[20,57,139,140,79],"task-scheduler","webcron","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Feasycron\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasycron.1.3.2.zip",{"attackSurface":144,"codeSignals":442,"taintFlows":493,"riskAssessment":526,"analyzedAt":534},{"hooks":145,"ajaxHandlers":438,"restRoutes":439,"shortcodes":440,"cronEvents":441,"entryPointCount":25,"unprotectedCount":25},[146,151,154,158,160,162,164,165,168,172,178,182,186,189,193,197,200,204,208,212,216,220,225,229,234,238,242,246,251,255,259,262,267,271,274,276,278,283,287,290,295,300,304,307,310,313,316,321,323,328,332,336,338,340,341,345,348,353,357,359,361,363,367,371,373,375,377,381,383,384,389,393,396,400,403,405,408,412,414,417,421,424,427,430,433,435],{"type":55,"name":147,"callback":148,"priority":83,"file":149,"line":150},"plugins_loaded","initialize_latest_version","action-scheduler.php",36,{"type":55,"name":147,"callback":152,"priority":25,"file":149,"line":153},"action_scheduler_register_3_dot_9_dot_3",39,{"type":55,"name":155,"callback":155,"priority":25,"file":156,"line":157},"init","classes\\abstracts\\ActionScheduler.php",196,{"type":55,"name":155,"callback":155,"priority":83,"file":156,"line":159},197,{"type":55,"name":155,"callback":155,"priority":83,"file":156,"line":161},198,{"type":55,"name":155,"callback":155,"priority":83,"file":156,"line":163},199,{"type":55,"name":155,"callback":155,"priority":83,"file":156,"line":134},{"type":55,"name":155,"callback":166,"priority":83,"file":156,"line":167},"closure",202,{"type":55,"name":169,"callback":170,"file":156,"line":171},"action_scheduler\u002Fmigration_complete","ActionScheduler_WPCommentCleaner::maybe_schedule_cleanup",261,{"type":55,"name":173,"callback":174,"priority":175,"file":176,"line":177},"action_scheduler_canceled_action","log_canceled_action",10,"classes\\abstracts\\ActionScheduler_Logger.php",67,{"type":55,"name":179,"callback":180,"priority":175,"file":176,"line":181},"action_scheduler_begin_execute","log_started_action",68,{"type":55,"name":183,"callback":184,"priority":175,"file":176,"line":185},"action_scheduler_after_execute","log_completed_action",69,{"type":55,"name":187,"callback":188,"priority":175,"file":176,"line":13},"action_scheduler_failed_execution","log_failed_action",{"type":55,"name":190,"callback":191,"priority":175,"file":176,"line":192},"action_scheduler_failed_action","log_timed_out_action",71,{"type":55,"name":194,"callback":195,"priority":175,"file":176,"line":196},"action_scheduler_unexpected_shutdown","log_unexpected_shutdown",72,{"type":55,"name":198,"callback":199,"priority":175,"file":176,"line":35},"action_scheduler_reset_action","log_reset_action",{"type":55,"name":201,"callback":202,"priority":175,"file":176,"line":203},"action_scheduler_execution_ignored","log_ignored_action",74,{"type":55,"name":205,"callback":206,"priority":175,"file":176,"line":207},"action_scheduler_failed_fetch_action","log_failed_fetch_action",75,{"type":55,"name":209,"callback":210,"priority":175,"file":176,"line":211},"action_scheduler_failed_to_schedule_next_instance","log_failed_schedule_next_instance",76,{"type":55,"name":213,"callback":214,"priority":175,"file":176,"line":215},"action_scheduler_bulk_cancel_actions","bulk_log_cancel_actions",77,{"type":55,"name":217,"callback":218,"file":176,"line":219},"action_scheduler_stored_action","log_stored_action",84,{"type":55,"name":221,"callback":222,"file":223,"line":224},"woocommerce_admin_status_content_action-scheduler","render_admin_ui","classes\\ActionScheduler_AdminView.php",56,{"type":55,"name":226,"callback":227,"file":223,"line":228},"woocommerce_system_status_report","system_status_report",57,{"type":230,"name":231,"callback":232,"file":223,"line":233},"filter","woocommerce_admin_status_tabs","register_system_status_tab",58,{"type":55,"name":235,"callback":236,"file":223,"line":237},"admin_menu","register_menu",61,{"type":55,"name":239,"callback":240,"file":223,"line":241},"admin_notices","maybe_check_pastdue_actions",62,{"type":55,"name":243,"callback":244,"file":223,"line":245},"current_screen","add_help_tabs",63,{"type":230,"name":247,"callback":248,"priority":24,"file":249,"line":250},"action_scheduler_store_class","set_store_class","classes\\ActionScheduler_DataController.php",190,{"type":230,"name":252,"callback":253,"priority":24,"file":249,"line":254},"action_scheduler_logger_class","set_logger_class",191,{"type":55,"name":256,"callback":257,"file":249,"line":258},"deactivate_plugin","mark_migration_incomplete",192,{"type":55,"name":260,"callback":261,"file":249,"line":159},"action_scheduler\u002Fprogress_tick","maybe_free_memory",{"type":55,"name":263,"callback":264,"file":265,"line":266},"shutdown","handle_unexpected_shutdown","classes\\ActionScheduler_FatalErrorMonitor.php",45,{"type":55,"name":268,"callback":269,"priority":25,"file":265,"line":270},"action_scheduler_before_execute","track_current_action",46,{"type":55,"name":183,"callback":272,"priority":25,"file":265,"line":273},"untrack_action",47,{"type":55,"name":201,"callback":272,"priority":25,"file":265,"line":275},48,{"type":55,"name":187,"callback":272,"priority":25,"file":265,"line":277},49,{"type":55,"name":279,"callback":280,"priority":175,"file":281,"line":282},"action_scheduler\u002Fcreated_table","set_autoincrement","classes\\ActionScheduler_ListTable.php",554,{"type":230,"name":284,"callback":285,"file":286,"line":196},"cron_schedules","add_wp_cron_schedule","classes\\ActionScheduler_QueueRunner.php",{"type":55,"name":263,"callback":288,"file":286,"line":289},"maybe_dispatch_async_request",95,{"type":55,"name":291,"callback":292,"file":293,"line":294},"action_scheduler_init","schedule_recurring_scheduler_hook","classes\\ActionScheduler_RecurringActionScheduler.php",28,{"type":55,"name":296,"callback":297,"priority":175,"file":298,"line":299},"pre_get_comments","filter_comment_queries","classes\\ActionScheduler_WPCommentCleaner.php",44,{"type":55,"name":301,"callback":302,"priority":303,"file":298,"line":266},"wp_count_comments","filter_comment_count",20,{"type":55,"name":305,"callback":306,"priority":175,"file":298,"line":270},"comment_feed_where","filter_comment_feed",{"type":55,"name":308,"callback":309,"file":298,"line":277},"load-tools_page_action-scheduler","register_admin_notice",{"type":55,"name":311,"callback":309,"file":298,"line":312},"load-woocommerce_page_wc-status",50,{"type":55,"name":239,"callback":314,"file":298,"line":315},"print_admin_notice",109,{"type":55,"name":317,"callback":318,"priority":175,"file":319,"line":320},"action_scheduler_deleted_action","clear_deleted_action_logs","classes\\data-stores\\ActionScheduler_DBLogger.php",112,{"type":55,"name":279,"callback":280,"priority":175,"file":322,"line":207},"classes\\data-stores\\ActionScheduler_HybridStore.php",{"type":230,"name":324,"callback":325,"priority":175,"file":326,"line":327},"comments_clauses","filter_comment_query_clauses","classes\\data-stores\\ActionScheduler_wpCommentLogger.php",129,{"type":55,"name":329,"callback":330,"priority":175,"file":326,"line":331},"action_scheduler_before_process_queue","disable_comment_counting",254,{"type":55,"name":333,"callback":334,"priority":175,"file":326,"line":335},"action_scheduler_after_process_queue","enable_comment_counting",255,{"type":55,"name":296,"callback":297,"priority":175,"file":326,"line":337},259,{"type":55,"name":301,"callback":302,"priority":303,"file":326,"line":339},260,{"type":55,"name":305,"callback":306,"priority":175,"file":326,"line":171},{"type":55,"name":342,"callback":343,"file":326,"line":344},"wp_insert_comment","delete_comment_count_cache",264,{"type":55,"name":346,"callback":343,"file":326,"line":347},"wp_set_comment_status",265,{"type":230,"name":349,"callback":350,"priority":175,"file":351,"line":352},"wp_insert_post_data","filter_insert_post_data","classes\\data-stores\\ActionScheduler_wpPostStore.php",81,{"type":230,"name":354,"callback":355,"priority":175,"file":351,"line":356},"pre_wp_unique_post_slug","set_unique_post_slug",82,{"type":230,"name":354,"callback":355,"priority":175,"file":351,"line":358},518,{"type":230,"name":349,"callback":350,"priority":175,"file":351,"line":360},1006,{"type":230,"name":354,"callback":355,"priority":175,"file":351,"line":362},1007,{"type":230,"name":364,"callback":365,"file":351,"line":366},"action_scheduler_migration_dependencies_met","migration_dependencies_met",1094,{"type":55,"name":239,"callback":368,"priority":175,"file":369,"line":370},"display_migration_notice","classes\\migration\\Controller.php",176,{"type":230,"name":247,"callback":372,"priority":24,"file":369,"line":250},"get_store_class",{"type":230,"name":252,"callback":374,"priority":24,"file":369,"line":254},"get_logger_class",{"type":55,"name":155,"callback":376,"file":369,"line":258},"maybe_hook_migration",{"type":55,"name":378,"callback":379,"file":369,"line":380},"wp_loaded","schedule_migration",193,{"type":55,"name":308,"callback":382,"priority":175,"file":369,"line":157},"hook_admin_notices",{"type":55,"name":311,"callback":382,"priority":175,"file":369,"line":159},{"type":55,"name":385,"callback":386,"priority":175,"file":387,"line":388},"action_scheduler_before_schema_update","update_schema_3_0","classes\\schema\\ActionScheduler_LoggerSchema.php",35,{"type":55,"name":385,"callback":390,"priority":175,"file":391,"line":392},"update_schema_5_0","classes\\schema\\ActionScheduler_StoreSchema.php",40,{"type":55,"name":317,"callback":394,"file":395,"line":392},"on_action_deleted","classes\\WP_CLI\\Action\\Delete_Command.php",{"type":55,"name":201,"callback":397,"file":398,"line":399},"on_action_ignored","classes\\WP_CLI\\Action\\Run_Command.php",42,{"type":55,"name":183,"callback":401,"file":398,"line":402},"on_action_executed",43,{"type":55,"name":187,"callback":404,"priority":175,"file":398,"line":299},"on_action_failed",{"type":55,"name":406,"callback":407,"priority":175,"file":398,"line":266},"action_scheduler_failed_validation","on_action_invalid",{"type":55,"name":268,"callback":409,"file":410,"line":411},"before_execute","classes\\WP_CLI\\ActionScheduler_WPCLI_QueueRunner.php",87,{"type":55,"name":183,"callback":413,"priority":175,"file":410,"line":95},"after_execute",{"type":55,"name":187,"callback":415,"priority":175,"file":410,"line":416},"action_failed",89,{"type":55,"name":418,"callback":166,"file":419,"line":420},"action_scheduler\u002Fmigrate_action_dry_run","classes\\WP_CLI\\Migration_Command.php",137,{"type":55,"name":422,"callback":166,"file":419,"line":423},"action_scheduler\u002Fno_action_to_migrate",144,{"type":55,"name":425,"callback":166,"file":419,"line":426},"action_scheduler\u002Fmigrate_action_failed",151,{"type":55,"name":428,"callback":166,"priority":175,"file":419,"line":429},"action_scheduler\u002Fmigrate_action_incomplete",158,{"type":55,"name":431,"callback":166,"priority":175,"file":419,"line":432},"action_scheduler\u002Fmigrated_action",167,{"type":55,"name":434,"callback":166,"file":419,"line":370},"action_scheduler\u002Fmigration_batch_starting",{"type":55,"name":436,"callback":166,"file":419,"line":437},"action_scheduler\u002Fmigration_batch_complete",183,[],[],[],[],{"dangerousFunctions":443,"sqlUsage":449,"outputEscaping":466,"fileOperations":25,"externalRequests":25,"nonceChecks":116,"capabilityChecks":83,"bundledLibraries":492},[444],{"fn":445,"file":446,"line":447,"context":448},"unserialize","classes\\data-stores\\ActionScheduler_DBStore.php",397,"$schedule = unserialize( $data->schedule ); \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.se",{"prepared":203,"raw":49,"locations":450},[451,454,457,460,463,464],{"file":281,"line":452,"context":453},360,"$wpdb->get_col() with variable interpolation",{"file":446,"line":455,"context":456},1169,"$wpdb->query() with variable interpolation",{"file":322,"line":458,"context":459},154,"$wpdb->get_var() with variable interpolation",{"file":326,"line":461,"context":462},203,"$wpdb->get_results() with variable interpolation",{"file":387,"line":95,"context":453},{"file":391,"line":465,"context":453},130,{"escaped":467,"rawEcho":175,"locations":468},93,[469,473,475,478,480,483,484,486,488,490],{"file":470,"line":471,"context":472},"classes\\abstracts\\ActionScheduler_Abstract_ListTable.php",726,"raw output",{"file":470,"line":474,"context":472},748,{"file":476,"line":477,"context":472},"classes\\ActionScheduler_wcSystemStatus.php",110,{"file":479,"line":33,"context":472},"classes\\WP_CLI\\Action\\List_Command.php",{"file":481,"line":482,"context":472},"classes\\WP_CLI\\Action\\Next_Command.php",53,{"file":481,"line":48,"context":472},{"file":485,"line":392,"context":472},"classes\\WP_CLI\\System_Command.php",{"file":485,"line":487,"context":472},51,{"file":485,"line":489,"context":472},107,{"file":485,"line":491,"context":472},160,[],[494,513],{"entryPoint":495,"graph":496,"unsanitizedCount":83,"severity":512},"display_table (classes\\abstracts\\ActionScheduler_Abstract_ListTable.php:736)",{"nodes":497,"edges":509},[498,503],{"id":499,"type":500,"label":501,"file":470,"line":502},"n0","source","$_GET",739,{"id":504,"type":505,"label":506,"file":470,"line":507,"wp_function":508},"n1","sink","echo() [XSS]",744,"echo",[510],{"from":499,"to":504,"sanitized":511},false,"medium",{"entryPoint":514,"graph":515,"unsanitizedCount":25,"severity":525},"\u003CActionScheduler_Abstract_ListTable> (classes\\abstracts\\ActionScheduler_Abstract_ListTable.php:0)",{"nodes":516,"edges":522},[517,520],{"id":499,"type":500,"label":518,"file":470,"line":519},"$_GET (x2)",189,{"id":504,"type":505,"label":506,"file":470,"line":521,"wp_function":508},530,[523],{"from":499,"to":504,"sanitized":524},true,"low",{"summary":527,"deductions":528},"The Action Scheduler plugin, version 3.9.3, presents a generally strong security posture based on the provided static analysis.  The absence of any recorded CVEs and the plugin's diligent use of prepared statements for SQL queries (93%) and proper output escaping (90%) are significant strengths.  The limited attack surface with zero identified entry points, especially without authentication checks, is also a positive indicator.  However, the presence of the `unserialize` function, even if not immediately exploitable by other factors, represents a potential risk. While taint analysis shows only one flow with unsanitized paths and no critical or high-severity issues, this still warrants caution as it could become a vector if exploited in conjunction with other weaknesses.\n\nThe vulnerability history is completely clean, indicating a mature and well-maintained codebase. This lack of past issues, combined with the overall good practices observed in the code, suggests a low probability of immediate, critical vulnerabilities. Nevertheless, the single unsanitized path in the taint analysis and the dangerous `unserialize` function are points that require ongoing vigilance. In conclusion, Action Scheduler v3.9.3 is well-secured with robust security practices. The primary concern lies in the potential, albeit unexploited, risk associated with `unserialize` and the identified unsanitized path, which should be monitored for future updates.",[529,531],{"reason":530,"points":175},"Dangerous function detected: unserialize",{"reason":532,"points":533},"Flow with unsanitized paths detected",5,"2026-03-16T17:34:01.243Z",{"wat":536,"direct":549},{"assetPaths":537,"generatorPatterns":542,"scriptPaths":543,"versionParams":544},[538,539,540,541],"\u002Fwp-content\u002Fplugins\u002Faction-scheduler\u002Fcss\u002Faction-scheduler.css","\u002Fwp-content\u002Fplugins\u002Faction-scheduler\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Faction-scheduler\u002Fjs\u002Faction-scheduler.js","\u002Fwp-content\u002Fplugins\u002Faction-scheduler\u002Fjs\u002Fadmin.js",[],[540,541],[545,546,547,548],"action-scheduler\u002Fstyle.css?ver=","action-scheduler\u002Fadmin.css?ver=","action-scheduler\u002Faction-scheduler.js?ver=","action-scheduler\u002Fadmin.js?ver=",{"cssClasses":550,"htmlComments":558,"htmlAttributes":562,"restEndpoints":570,"jsGlobals":574,"shortcodeOutput":578},[551,552,553,554,555,556,557],"action-scheduler-admin-wrap","as-status-pending","as-status-complete","as-status-failed","as-status-canceled","as-status-in-progress","as-list-table",[559,560,561],"\u003C!-- Action Scheduler -->","\u003C!-- Admin page for Action Scheduler -->","\u003C!-- Action Scheduler Admin Page -->",[563,564,565,566,567,568,569],"data-action-id","data-action-hook","data-action-status","data-action-group","data-schedule-id","data-schedule-date","data-action-args",[571,572,573],"\u002Fwp-json\u002Faction-scheduler\u002Fv1\u002Freports","\u002Fwp-json\u002Faction-scheduler\u002Fv1\u002Flogs","\u002Fwp-json\u002Faction-scheduler\u002Fv1\u002Factions",[575,576,577],"ActionScheduler","actionSchedulerAdmin","action_scheduler_params",[579,580],"[action_scheduler_logs]","[action_scheduler_report]"]