[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fR5k4oIFpgzYyk87fbAJGjykq8vypYta1GzuXi13lrls":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":36,"analysis":136,"fingerprints":290},"post-expiry-scheduler","Post Expiry Scheduler","1.0.1","Volt Blocks","https:\u002F\u002Fprofiles.wordpress.org\u002Fjamesvolt87\u002F","\u003Cp>A lightweight WordPress plugin that automatically expires posts by moving them to draft status based on expiry date\u002Ftime.\u003C\u002Fp>\n","Automatically expire posts by moving them to draft status based on expiry date\u002Ftime.",0,157,"2025-10-27T07:40:00.000Z","6.8.5","5.0","7.4",[18,19,20,21,22],"automation","draft","expiry","posts","scheduler","https:\u002F\u002Fvoltblocks.com\u002Fplugins\u002Fpost-expiry-scheduler\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-expiry-scheduler.zip",100,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":25,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"jamesvolt87",2,60,30,94,"2026-04-04T09:32:27.702Z",[37,61,81,99,116],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":57,"download_link":58,"security_score":59,"vuln_count":31,"unpatched_count":11,"last_vuln_date":60,"fetched_at":27},"publish-to-schedule","Publish to Schedule","4.5.8","alexbenfica","https:\u002F\u002Fprofiles.wordpress.org\u002Falexbenfica\u002F","\u003Cp>Looking for a way to streamline your WordPress blog post scheduling? Look no further than Publish to Schedule!\u003C\u002Fp>\n\u003Cp>Publish to Schedule is a powerful and flexible WordPress scheduling plugin that lets you automate your blog post publishing process. With just a few simple configurations, you can set up a schedule that works for you, ensuring that your content is consistently published on the days and times you choose.\u003C\u002Fp>\n\u003Cp>With the ability to set specific days of the week, number of posts per day, and time intervals for scheduling, Publish to Schedule takes the guesswork out of post publishing. And if you ever need to make adjustments, the plugin provides clear and detailed information in the publish box, allowing you to easily modify dates and times as needed.\u003C\u002Fp>\n\u003Cp>Publish to Schedule is perfect for bloggers who want to focus on creating great content, without the hassle of manual scheduling. And with its easy-to-use interface, even those with little technical knowledge can quickly get up and running.\u003C\u002Fp>\n\u003Cp>So if you’re looking to take your blog to the next level, download Publish to Schedule today and see the difference it can make for your content creation process.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Support the Development:\u003C\u002Fstrong> If you find this plugin useful, please consider \u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002FFQNxAqVUTo\" rel=\"nofollow ugc\">making a donation\u003C\u002Fa> to support ongoing development and maintenance.\u003C\u002Fp>\n","Automate your WordPress post scheduling with Publish to Schedule. Set rules for days and times to publish posts automatically, saving you time and ens &hellip;",5000,76130,86,23,"2025-12-04T02:47:00.000Z","6.9.4","2.8","",[18,54,21,55,56],"post-scheduler","productivity","scheduling","https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fpublish-to-schedule\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpublish-to-schedule.zip",99,"2023-02-27 00:00:00",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":32,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":52,"tags":75,"homepage":78,"download_link":79,"security_score":80,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"electric-studio-auto-expire-post","Electric Studio Auto Post Expire","1.6.10","James Irving-Swift","https:\u002F\u002Fprofiles.wordpress.org\u002Firvingswiftj\u002F","\u003Cp>Adds an expiry date and time to posts, pages, or custom post types in which the post becomes a draft.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Supports custom post types\u003C\u002Fli>\n\u003Cli>Allows admin to choose which post types can expire\u003C\u002Fli>\n\u003Cli>Sets expired posts to drafts rather than deleting them\u003C\u002Fli>\n\u003Cli>To show an expiry date on the frontend, use shortcode [expirydate] else function es_ape_exp_date()\u003C\u002Fli>\n\u003C\u002Ful>\n","Adds an expiry date and time to posts, pages, or custom post types after which the post becomes expired.",16949,20,3,"2014-02-14T08:58:00.000Z","3.7.41","3.0",[76,77,19,20,21],"custom-posts","date","http:\u002F\u002Fwww.electricstudio.co.uk","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Felectric-studio-auto-expire-post.zip",85,{"slug":82,"name":83,"version":84,"author":85,"author_profile":86,"description":87,"short_description":88,"active_installs":70,"downloaded":89,"rating":11,"num_ratings":11,"last_updated":90,"tested_up_to":50,"requires_at_least":15,"requires_php":91,"tags":92,"homepage":97,"download_link":98,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"simple-auto-post-scheduler","Simple Auto Post Scheduler","1.0.0","Mehedi Hasan","https:\u002F\u002Fprofiles.wordpress.org\u002Fmehedidev\u002F","\u003Cp>Simple Auto Post Scheduler is a powerful yet simple plugin that allows you to schedule your draft posts to be automatically published at specific dates and times. Perfect for bloggers, content managers, and anyone who wants to automate their content publishing workflow.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Schedule posts to publish at specific date and time\u003C\u002Fli>\n\u003Cli>Set recurring intervals (hourly, daily, weekly, monthly)\u003C\u002Fli>\n\u003Cli>Simple and intuitive user interface\u003C\u002Fli>\n\u003Cli>Dashboard widget showing upcoming scheduled posts\u003C\u002Fli>\n\u003Cli>Post editor meta box for quick schedule overview\u003C\u002Fli>\n\u003Cli>Automatic cleanup of old completed schedules\u003C\u002Fli>\n\u003Cli>Fully responsive admin interface\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Use Cases:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Schedule blog posts for optimal publishing times\u003C\u002Fli>\n\u003Cli>Automate content distribution throughout the week\u003C\u002Fli>\n\u003Cli>Plan content calendar in advance\u003C\u002Fli>\n\u003Cli>Maintain consistent posting schedule\u003C\u002Fli>\n\u003Cli>Publish content during off-hours or vacations\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>How It Works:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>Create your post as a draft\u003C\u002Fli>\n\u003Cli>Go to Simple Auto Post Scheduler \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Add New\u003C\u002Fli>\n\u003Cli>Select your draft post\u003C\u002Fli>\n\u003Cli>Choose date and time\u003C\u002Fli>\n\u003Cli>Optionally set recurring interval\u003C\u002Fli>\n\u003Cli>Your post will automatically publish at the scheduled time\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, feature requests, or bug reports, please visit our support forum or contact us through our website.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Developed with ❤️ for the WordPress community.\u003C\u002Fp>\n","Schedule posts to be published at specific times and intervals with an easy-to-use interface.",206,"2026-02-28T06:40:00.000Z","7.0",[93,94,95,96,22],"auto-publish","cron","post-automation","schedule-posts","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsimple-auto-post-scheduler\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimple-auto-post-scheduler.zip",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":107,"downloaded":108,"rating":25,"num_ratings":109,"last_updated":110,"tested_up_to":14,"requires_at_least":15,"requires_php":111,"tags":112,"homepage":52,"download_link":115,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"controlled-draft-publisher","Controlled Draft Publisher","1.4","techygeekshome","https:\u002F\u002Fprofiles.wordpress.org\u002Ftechygeekshome\u002F","\u003Cp>Publishes one draft post every X minutes. Includes logging, stats, and an admin dashboard with start\u002Fstop, manual publish, filter, and refresh controls.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Publish one draft post at a configurable interval.\u003Cbr \u002F>\n– Simple start\u002Fstop controls and manual publish button.\u003Cbr \u002F>\n– Activity log with timestamps, post titles, and permalinks.\u003Cbr \u002F>\n– Basic stats: total published and last published entry.\u003Cbr \u002F>\n– Works with selected post types.\u003C\u002Fp>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>Controlled Draft Publisher stores an activity log (\u003Ccode>cdp_log\u003C\u002Fcode>) in the WordPress database when logging is enabled. The log includes post IDs, titles, timestamps, permalinks, and post types for published drafts. No user data is collected or sent externally. Logs can be cleared or exported via the dashboard.\u003C\u002Fp>\n\u003Ch3>Notes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Ensure your site meets the PHP and WordPress version requirements before installing.\u003C\u002Fli>\n\u003Cli>Server cron or WP-Cron behaviour may vary on low-traffic sites; consider using a real cron if reliable timing is required.\u003C\u002Fli>\n\u003Cli>Translation-ready: Includes \u003Ccode>controlled-draft-publisher.pot\u003C\u002Fcode> in the \u003Ccode>languages\u002F\u003C\u002Fcode> folder for translators.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License version 2, or any later version, as published by the Free Software Foundation.\u003C\u002Fp>\n\u003Ch3>License URI\u003C\u002Fh3>\n\u003Cp>https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\u003C\u002Fp>\n","Publishes one draft post every configurable interval, with logging and an admin dashboard.",10,254,1,"2026-01-19T08:53:00.000Z","8.0",[18,94,113,114,22],"drafts","publishing","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontrolled-draft-publisher.1.4.zip",{"slug":117,"name":118,"version":119,"author":120,"author_profile":121,"description":122,"short_description":123,"active_installs":124,"downloaded":125,"rating":126,"num_ratings":127,"last_updated":128,"tested_up_to":91,"requires_at_least":129,"requires_php":111,"tags":130,"homepage":134,"download_link":135,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"public-post-preview","Public Post Preview","3.1.0","Dominik Schilling","https:\u002F\u002Fprofiles.wordpress.org\u002Focean90\u002F","\u003Cp>Share a link to anonymous users to preview a draft of a post (or any other public post type) before it is published.\u003C\u002Fp>\n\u003Cp>Have you ever been writing a post with the help of someone who does not have access to your site and needed to give them the ability to preview it before publishing? This plugin takes care of that by generating an URL with an expiring nonce that can be given out for public preview.\u003C\u002Fp>\n\u003Cp>\u003Cem>Previously this plugin was maintained by \u003Ca href=\"https:\u002F\u002Fprofiles.wordpress.org\u002Fsivel\u002F\" rel=\"nofollow ugc\">Matt Martz\u003C\u002Fa> and was an idea of \u003Ca href=\"https:\u002F\u002Fprofiles.wordpress.org\u002Fjdingman\u002F\" rel=\"nofollow ugc\">Jonathan Dingman\u003C\u002Fa>. Photo by \u003Ca href=\"https:\u002F\u002Funsplash.com\u002Fphotos\u002Fopened-book-on-grass-during-daytime-bhBONc07WsI\" rel=\"nofollow ugc\">Annelies Geneyn\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>To enable a public post preview check the box in the document settings. In the classic editor it’s in the “Publish” meta box.\u003C\u002Fli>\n\u003Cli>The link will be displayed if the checkbox is checked, you can copy and share the link with your friends.\u003C\u002Fli>\n\u003Cli>To disable a preview uncheck the box again.\u003C\u002Fli>\n\u003C\u002Ful>\n","Allow anonymous users to preview a draft of a post before it is published.",100000,1584582,90,79,"2026-03-01T16:13:00.000Z","6.6",[131,113,21,132,133],"anonymous","preview","public","https:\u002F\u002Fgithub.com\u002Focean90\u002Fpublic-post-preview","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpublic-post-preview.3.1.0.zip",{"attackSurface":137,"codeSignals":217,"taintFlows":253,"riskAssessment":281,"analyzedAt":289},{"hooks":138,"ajaxHandlers":199,"restRoutes":210,"shortcodes":211,"cronEvents":212,"entryPointCount":31,"unprotectedCount":11},[139,145,149,153,157,161,165,169,171,175,177,179,183,187,188,192,195],{"type":140,"name":141,"callback":142,"file":143,"line":144},"action","admin_enqueue_scripts","enqueue_admin_scripts","includes\\class-pes-admin.php",32,{"type":140,"name":146,"callback":147,"file":143,"line":148},"manage_posts_columns","add_expiry_column",33,{"type":140,"name":150,"callback":151,"priority":107,"file":143,"line":152},"manage_posts_custom_column","display_expiry_column",34,{"type":140,"name":154,"callback":155,"file":143,"line":156},"bulk_actions-edit-post","add_bulk_actions",35,{"type":140,"name":158,"callback":159,"priority":107,"file":143,"line":160},"handle_bulk_actions-edit-post","handle_bulk_actions",36,{"type":140,"name":162,"callback":163,"file":143,"line":164},"admin_notices","bulk_action_notices",37,{"type":140,"name":166,"callback":167,"file":168,"line":144},"pes_check_expired_posts","check_expired_posts","includes\\class-pes-cron.php",{"type":140,"name":162,"callback":170,"file":168,"line":148},"cron_reliability_notice",{"type":172,"name":173,"callback":174,"file":168,"line":160},"filter","cron_schedules","add_cron_interval",{"type":172,"name":173,"callback":174,"file":168,"line":176},44,{"type":172,"name":173,"callback":174,"file":168,"line":178},66,{"type":140,"name":180,"callback":180,"file":181,"line":182},"add_meta_boxes","includes\\class-pes-post-meta.php",28,{"type":140,"name":184,"callback":185,"file":181,"line":186},"save_post","save_post_meta",29,{"type":140,"name":141,"callback":142,"file":181,"line":33},{"type":140,"name":189,"callback":190,"file":191,"line":182},"admin_menu","add_admin_menu","includes\\class-pes-settings.php",{"type":140,"name":193,"callback":194,"file":191,"line":186},"admin_init","register_settings",{"type":140,"name":196,"callback":196,"file":197,"line":198},"init","post-expiry-scheduler.php",63,[200,206],{"action":201,"nopriv":202,"callback":203,"hasNonce":204,"hasCapCheck":204,"file":143,"line":205},"pes_manual_check",false,"ajax_manual_check",true,38,{"action":207,"nopriv":202,"callback":208,"hasNonce":204,"hasCapCheck":204,"file":143,"line":209},"pes_unexpire_post","ajax_unexpire_post",39,[],[],[213,215],{"hook":166,"callback":166,"file":168,"line":214},47,{"hook":166,"callback":166,"file":168,"line":216},69,{"dangerousFunctions":218,"sqlUsage":219,"outputEscaping":221,"fileOperations":11,"externalRequests":11,"nonceChecks":250,"capabilityChecks":251,"bundledLibraries":252},[],{"prepared":11,"raw":11,"locations":220},[],{"escaped":222,"rawEcho":223,"locations":224},40,12,[225,228,230,232,234,236,238,240,242,244,246,248],{"file":143,"line":226,"context":227},108,"raw output",{"file":143,"line":229,"context":227},115,{"file":143,"line":231,"context":227},127,{"file":143,"line":233,"context":227},135,{"file":143,"line":235,"context":227},140,{"file":181,"line":237,"context":227},124,{"file":191,"line":239,"context":227},142,{"file":191,"line":241,"context":227},149,{"file":191,"line":243,"context":227},202,{"file":191,"line":245,"context":227},219,{"file":191,"line":247,"context":227},232,{"file":191,"line":249,"context":227},242,5,7,[],[254,272],{"entryPoint":255,"graph":256,"unsanitizedCount":109,"severity":271},"bulk_action_notices (includes\\class-pes-admin.php:264)",{"nodes":257,"edges":269},[258,263],{"id":259,"type":260,"label":261,"file":143,"line":262},"n0","source","$_REQUEST",271,{"id":264,"type":265,"label":266,"file":143,"line":267,"wp_function":268},"n1","sink","echo() [XSS]",299,"echo",[270],{"from":259,"to":264,"sanitized":202},"medium",{"entryPoint":273,"graph":274,"unsanitizedCount":11,"severity":280},"\u003Cclass-pes-admin> (includes\\class-pes-admin.php:0)",{"nodes":275,"edges":278},[276,277],{"id":259,"type":260,"label":261,"file":143,"line":262},{"id":264,"type":265,"label":266,"file":143,"line":267,"wp_function":268},[279],{"from":259,"to":264,"sanitized":204},"low",{"summary":282,"deductions":283},"The \"post-expiry-scheduler\" v1.0.1 plugin demonstrates a generally strong security posture, with several positive indicators. The absence of known CVEs and a clean vulnerability history suggest a commitment to security or a lack of targeted exploitation. The code analysis reveals good practices such as 100% of SQL queries using prepared statements, a significant portion of output being properly escaped, and the presence of nonce and capability checks. The attack surface is relatively small and appears to be protected.\n\nHowever, a single taint flow with an unsanitized path presents a potential concern. While the severity is not explicitly classified as critical or high in the provided data, any unsanitized path could lead to vulnerabilities like directory traversal or arbitrary file access if the input is not strictly controlled. The 77% proper output escaping, while above average, also means that 23% of outputs are not properly escaped, which could be a vector for Cross-Site Scripting (XSS) if the unescaped data originates from user input.\n\nOverall, the plugin is well-developed from a security perspective, particularly in its handling of database interactions and authentication. The primary area for improvement and potential risk lies in thoroughly auditing and sanitizing the identified unsanitized path flow. Addressing this, along with ensuring all output is strictly escaped, would further solidify its security.",[284,287],{"reason":285,"points":286},"Flow with unsanitized path detected",8,{"reason":288,"points":250},"23% of outputs not properly escaped","2026-03-17T06:24:56.626Z",{"wat":291,"direct":300},{"assetPaths":292,"generatorPatterns":295,"scriptPaths":296,"versionParams":297},[293,294],"\u002Fwp-content\u002Fplugins\u002Fpost-expiry-scheduler\u002Fassets\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fpost-expiry-scheduler\u002Fassets\u002Fjs\u002Fadmin.js",[],[294],[298,299],"post-expiry-scheduler\u002Fassets\u002Fcss\u002Fadmin.css?ver=","post-expiry-scheduler\u002Fassets\u002Fjs\u002Fadmin.js?ver=",{"cssClasses":301,"htmlComments":306,"htmlAttributes":307,"restEndpoints":310,"jsGlobals":313,"shortcodeOutput":315},[302,303,304,305],"pes-no-expiry","pes-no-date","pes-expired","pes-expiry-admin-wrap",[],[308,309],"data-post-id","data-nonce",[311,312],"\u002Fwp-json\u002Fpes\u002Fv1\u002Fmanual-check","\u002Fwp-json\u002Fpes\u002Fv1\u002Funexpire-post",[314],"pesAdmin",[]]