[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fUZzSFdd4Bpb9feSIUIzU8p3DVEBcCEwyz25H6Yh7aL4":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":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":17,"download_link":24,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":38,"analysis":130,"fingerprints":230},"depublish-posts","Depublish Posts","1.0.0","CodeSupply","https:\u002F\u002Fprofiles.wordpress.org\u002Fcodesupply\u002F","\u003Cp>Really simple plugin to depublish your posts after a given date. Blazingly fast, easy to use and blends seamlessly with the WordPress admin interface.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Enter depublication dates for every post type.\u003C\u002Fli>\n\u003Cli>No setup required.\u003C\u002Fli>\n\u003Cli>Fits right into your WordPress admin dashboard.\u003C\u002Fli>\n\u003Cli>Minimum performance footprint.\u003C\u002Fli>\n\u003Cli>Schedules posts for depublication using WP-Cron, so you can be certain that your posts are depublished at the set time.\u003C\u002Fli>\n\u003C\u002Ful>\n","Schedule your posts or pages to expire at a given date.",30,1795,0,"2017-12-14T18:43:00.000Z","4.9.29","4.8","",[19,20,21,22,23],"calendar","depublish","expire","posts","schedule","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdepublish-posts.1.0.0.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":31,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"codesupply","codesupplyco",6,111030,97,1041,77,"2026-04-04T08:31:21.825Z",[39,61,78,95,112],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":13,"num_ratings":13,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":17,"download_link":59,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"auto-post-expiry-manager","Auto Post Expiry Manager","1.0","Hardik Galiya","https:\u002F\u002Fprofiles.wordpress.org\u002Fhardik2104\u002F","\u003Cp>\u003Cstrong>Auto Post Expiry Manager\u003C\u002Fstrong> allows you to set an expiry date and time for any post or custom post type. Once the scheduled expiry time is reached, the post will automatically switch from “Published” to “Draft” status.\u003C\u002Fp>\n\u003Cp>It’s useful for:\u003Cbr \u002F>\n– Event announcements\u003Cbr \u002F>\n– Time-sensitive promotions\u003Cbr \u002F>\n– Auto-drafting outdated posts\u003Cbr \u002F>\n– Limiting visibility on dated content\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Works with \u003Cstrong>all public post types\u003C\u002Fstrong>\u003Cbr \u002F>\n– Set expiration time using a simple \u003Cstrong>datetime picker\u003C\u002Fstrong>\u003Cbr \u002F>\n– Lightweight cron job runs every minute\u003Cbr \u002F>\n– Automatically removes expiry after execution\u003Cbr \u002F>\n– Manual trigger available via URL for testing\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the \u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\" rel=\"nofollow ugc\">GPLv2 or later\u003C\u002Fa>.\u003Cbr \u002F>\nCopyright (c) 2025 Hardik Galiya\u003C\u002Fp>\n","Automatically expire posts and custom post types at a specific date and time. Works with all public post types and uses a lightweight cron scheduler.",80,457,"2025-06-23T05:38:00.000Z","6.8.5","5.0","7.2",[54,55,56,57,58],"auto-unpublish","expire-posts","post-expiration","post-lifecycle","schedule-post-draft","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fauto-post-expiry-manager.zip",100,{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":11,"downloaded":69,"rating":60,"num_ratings":70,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":52,"tags":74,"homepage":17,"download_link":77,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"post-calendar-gelform","Post Calendar by Gelform","1765989260","gelform","https:\u002F\u002Fprofiles.wordpress.org\u002Fgelform\u002F","\u003Cp>Managing your WordPress content just got a whole lot easier and a whole lot more fun! Introducing the \u003Cem>Post Calendar\u003C\u002Fem> plugin, the plugin that transforms your chaotic post list into a beautifully organized calendar view. No more endless scrolling to find that one scheduled post or digging through drafts trying to remember what’s next. The \u003Cem>Post Calendar\u003C\u002Fem> plugin is here to bring order, clarity, and a touch of magic to your content planning.\u003C\u002Fp>\n\u003Cp>\u003Cem>Why You’ll Love the Post Calendar plugin\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Ever wished you had a crystal ball to see your publishing schedule at a glance? The \u003Cem>Post Calendar\u003C\u002Fem> plugin delivers exactly that! Say goodbye to the headache of rescheduling. With the \u003Cem>Post Calendar\u003C\u002Fem> plugin, you simply click on any post in your calendar, pick a new date and time from a super intuitive popup, and boom! It’s rescheduled. It’s so easy, you’ll wonder how you ever managed without it.\u003C\u002Fp>\n\u003Cp>But wait, there’s more! Got a bunch of brilliant drafts gathering digital dust? Our handy “Drafts” button gives you an instant list of all your unscheduled masterpieces. From there, you can effortlessly schedule them, transforming ideas into scheduled reality. the \u003Cem>Post Calendar\u003C\u002Fem> plugin is perfect for bloggers, content marketers, news sites, or anyone who manages a dynamic content calendar. It’s your secret weapon for staying organized, hitting deadlines, and ensuring your content pipeline flows smoothly. Plus, you’re in control with flexible settings that let you choose exactly which post types get the calendar treatment and whether to add a quick link in your admin menu. Get ready to reclaim your content calendar and make publishing a joy!\u003C\u002Fp>\n","View your posts on a calendar and schedule posts with ease.",558,4,"2025-12-17T16:51:00.000Z","6.9.4","5.2",[19,75,22,76],"editorial-calendar","schedule-posts","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-calendar-gelform.1765989260.zip",{"slug":79,"name":80,"version":81,"author":17,"author_profile":82,"description":83,"short_description":84,"active_installs":85,"downloaded":86,"rating":60,"num_ratings":87,"last_updated":88,"tested_up_to":89,"requires_at_least":90,"requires_php":17,"tags":91,"homepage":17,"download_link":94,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"comment-expirator","Comment Expirator","1.1.1","https:\u002F\u002Fprofiles.wordpress.org\u002Ffarne\u002F","\u003Cp>Comment Expirator allows to schedule closing of comments, trackbacks and pingbacks on an individual basis at a date or time of your choice. It can be activated on any post type that allows comments. This is good for preventing spam on old posts. The plugin lets you chose if trackbacks and pingbacks should also be closed at the same time.\u003C\u002Fp>\n","Comment Expirator let's you close comments, pingbacks and trackbacks on your posts, pages and custom post types on an individual basis.",10,1881,1,"2015-01-12T12:47:00.000Z","4.1.42","3.9",[92,93,21,22,23],"comments","deactivate","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcomment-expirator.1.1.1.zip",{"slug":96,"name":97,"version":98,"author":99,"author_profile":100,"description":101,"short_description":102,"active_installs":85,"downloaded":103,"rating":60,"num_ratings":104,"last_updated":105,"tested_up_to":106,"requires_at_least":107,"requires_php":17,"tags":108,"homepage":110,"download_link":111,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"dishsoap","DishSoap","1.2","Mark Thomes","https:\u002F\u002Fprofiles.wordpress.org\u002Fmarkthomes\u002F","\u003Cp>Cleanup those old posts with DishSoap. DishSoap is an post unpublishing and unsticking plugin for those that want to automatically unpublish or unsticky a post on a specified date and time.\u003C\u002Fp>\n","Automatically unpublish or unsticky a post on a specified date and time. Simple interface for ease of use.",2591,2,"2013-12-31T06:23:00.000Z","3.7.41","3.3",[54,109,21,55,23],"auto-unstick","http:\u002F\u002Fwithan.es\u002Fdishsoap","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdishsoap.1.2.zip",{"slug":113,"name":114,"version":6,"author":115,"author_profile":116,"description":117,"short_description":118,"active_installs":85,"downloaded":119,"rating":13,"num_ratings":13,"last_updated":120,"tested_up_to":72,"requires_at_least":121,"requires_php":122,"tags":123,"homepage":128,"download_link":129,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"scheduled-posts-showcase","Scheduled Posts Showcase","Fernando Tellado","https:\u002F\u002Fprofiles.wordpress.org\u002Ffernandot\u002F","\u003Cp>\u003Cstrong>Scheduled Posts Showcase\u003C\u002Fstrong> lets you display your scheduled (future) posts on the frontend of your WordPress site without creating problematic links to unpublished content.\u003C\u002Fp>\n\u003Cp>Unlike other solutions that link to scheduled posts and generate 404 errors for visitors, this plugin shows post information (title, date, excerpt, featured image, categories) without ever exposing the permalink or post ID.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>No 404 errors\u003C\u002Fstrong> – Never generates links to unpublished content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multiple display methods\u003C\u002Fstrong> – Use shortcode, widget, Gutenberg block, or REST API\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fully customizable\u003C\u002Fstrong> – Control what information to display and how it looks\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Global settings with per-instance overrides\u003C\u002Fstrong> – Set defaults once, customize where needed\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Translation ready\u003C\u002Fstrong> – Fully prepared for localization\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer friendly\u003C\u002Fstrong> – Extensive hooks for customization\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Display Options\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Number of posts to show\u003C\u002Fli>\n\u003Cli>Featured image (thumbnail or medium size)\u003C\u002Fli>\n\u003Cli>Scheduled publication date\u003C\u002Fli>\n\u003Cli>Post excerpt (with configurable word count)\u003C\u002Fli>\n\u003Cli>Categories\u003C\u002Fli>\n\u003Cli>Custom heading with selectable HTML tag\u003C\u002Fli>\n\u003Cli>Custom footer content for calls to action\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Appearance Options\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Card or minimal container style\u003C\u002Fli>\n\u003Cli>Dashicon, theme default, or no list bullets\u003C\u002Fli>\n\u003Cli>Curated icon selector for list bullets\u003C\u002Fli>\n\u003Cli>Accent color customization\u003C\u002Fli>\n\u003Cli>Responsive design\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Visibility Control\u003C\u002Fh4>\n\u003Cp>Choose who can see your scheduled posts:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Everyone (public)\u003C\u002Fli>\n\u003Cli>Logged-in users only\u003C\u002Fli>\n\u003Cli>Editors and administrators only\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Shortcode:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[scheduled-posts-showcase]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>With parameters:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[scheduled-posts-showcase count=\"3\" show_date=\"1\" show_excerpt=\"1\" container_style=\"card\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Widget:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Add the “Scheduled Posts Showcase” widget to any widget area from Appearance \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Widgets.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Gutenberg Block:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Search for “Scheduled Posts” in the block inserter and add the block to any post or page.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>REST API:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>GET \u002Fwp-json\u002Fscheduled-posts-showcase\u002Fv1\u002Fscheduled-posts\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Parameters: \u003Ccode>per_page\u003C\u002Fcode>, \u003Ccode>fields\u003C\u002Fcode>, \u003Ccode>post_type\u003C\u002Fcode>, \u003Ccode>order\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch4>Why This Plugin?\u003C\u002Fh4>\n\u003Cp>Existing plugins for displaying scheduled posts either:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Are abandoned (some over 10 years old)\u003C\u002Fli>\n\u003Cli>Link to scheduled posts, causing 404 errors\u003C\u002Fli>\n\u003Cli>Use deprecated WordPress functions\u003C\u002Fli>\n\u003Cli>Lack modern features like Gutenberg blocks\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Scheduled Posts Showcase solves all these problems with a modern, secure, and fully-featured solution.\u003C\u002Fp>\n\u003Ch3>CSS Customization\u003C\u002Fh3>\n\u003Cp>The plugin provides semantic CSS classes for easy customization.\u003C\u002Fp>\n\u003Ch4>Available CSS Classes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ccode>.sps-scheduled-posts\u003C\u002Fcode> – Main container\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-style-card\u003C\u002Fcode> – Card style container\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-style-minimal\u003C\u002Fcode> – Minimal style container\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-heading\u003C\u002Fcode> – Heading element\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-list\u003C\u002Fcode> – Posts list (ul)\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-list-dashicon\u003C\u002Fcode> – List with dashicon bullets\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-list-theme\u003C\u002Fcode> – List with theme default bullets\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-list-none\u003C\u002Fcode> – List with no bullets\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-item\u003C\u002Fcode> – Each post item (li)\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-icon\u003C\u002Fcode> – Dashicon bullet\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-thumbnail\u003C\u002Fcode> – Featured image container\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-title\u003C\u002Fcode> – Post title\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-date\u003C\u002Fcode> – Scheduled date\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-excerpt\u003C\u002Fcode> – Post excerpt\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-categories\u003C\u002Fcode> – Categories list\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-scheduled-footer\u003C\u002Fcode> – Custom footer content\u003C\u002Fli>\n\u003Cli>\u003Ccode>.sps-no-scheduled\u003C\u002Fcode> – Empty state message\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Example Customizations\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F* Change font size for post titles *\u002F\n.sps-scheduled-title {\n    font-size: 1.1em;\n}\n\n\u002F* Add more padding to the card container *\u002F\n.sps-style-card {\n    padding: 1.5em;\n}\n\n\u002F* Custom color for the date *\u002F\n.sps-scheduled-date {\n    color: #666;\n    font-style: italic;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>CSS Custom Property\u003C\u002Fh4>\n\u003Cp>The accent color is available as a CSS custom property:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F* Use the accent color in your custom styles *\u002F\n.my-custom-element {\n    border-color: var(--sps-accent-color);\n}\u003Ch3>Developer Hooks\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The plugin provides filters and actions for developers to customize behavior without modifying plugin code.\u003C\u002Fp>\n\u003Ch4>Filters with Examples\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>spscase_query_args\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify WP_Query arguments before fetching scheduled posts.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_query_args', function( $args ) {\n    \u002F\u002F Only show posts from specific category\n    $args['cat'] = 5;\n    return $args;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_post_data\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify the data array for each post before rendering.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_post_data', function( $post_data, $post ) {\n    \u002F\u002F Add custom field to post data\n    $post_data['reading_time'] = get_post_meta( $post->ID, 'reading_time', true );\n    return $post_data;\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_post_html\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify the HTML output for each individual post item.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_post_html', function( $html, $post_data ) {\n    \u002F\u002F Add reading time after the title\n    if ( ! empty( $post_data['reading_time'] ) ) {\n        $badge = '\u003Cspan class=\"reading-time\">' . esc_html( $post_data['reading_time'] ) . ' min read\u003C\u002Fspan>';\n        $html = str_replace( '\u003C\u002Fspan class=\"sps-scheduled-title\">', '\u003C\u002Fspan>' . $badge, $html );\n    }\n    return $html;\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_output_html\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify the complete rendered HTML output.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_output_html', function( $html, $posts, $settings ) {\n    \u002F\u002F Wrap output in custom container\n    return '\u003Cdiv class=\"my-custom-wrapper\">' . $html . '\u003C\u002Fdiv>';\n}, 10, 3 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_rest_post_data\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify post data in REST API responses.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_rest_post_data', function( $post_data, $post ) {\n    \u002F\u002F Add author name to API response\n    $post_data['author'] = get_the_author_meta( 'display_name', $post->post_author );\n    return $post_data;\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_excerpt_length\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Override the excerpt word count.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_excerpt_length', function( $length ) {\n    \u002F\u002F Shorter excerpts for sidebar widgets\n    return 15;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_date_format\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Override the date format (default: WordPress date_format option).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_date_format', function( $format ) {\n    \u002F\u002F Show relative dates like \"in 3 days\"\n    return 'relative';\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_post_types\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Filter available post types in the settings dropdown.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_post_types', function( $post_types ) {\n    \u002F\u002F Remove 'page' from available post types\n    unset( $post_types['page'] );\n    return $post_types;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_cache_expiration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify cache duration in seconds (default: 3600 = 1 hour).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_cache_expiration', function( $seconds ) {\n    \u002F\u002F Cache for 6 hours on high-traffic sites\n    return 6 * HOUR_IN_SECONDS;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_allowed_footer_html\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modify allowed HTML tags for footer content.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'spscase_allowed_footer_html', function( $allowed_tags ) {\n    \u002F\u002F Allow button element in footer\n    $allowed_tags['button'] = array(\n        'class' => true,\n        'type'  => true,\n    );\n    return $allowed_tags;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Actions with Examples\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>spscase_before_output\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Fires before the scheduled posts list renders.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_action( 'spscase_before_output', function( $posts, $settings ) {\n    \u002F\u002F Track impressions\n    if ( function_exists( 'my_track_impression' ) ) {\n        my_track_impression( 'scheduled_posts_widget' );\n    }\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>spscase_after_output\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Fires after the scheduled posts list renders.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_action( 'spscase_after_output', function( $posts, $settings ) {\n    \u002F\u002F Output additional content after the list\n    echo '\u003Cp class=\"sps-custom-note\">Updated hourly\u003C\u002Fp>';\n}, 10, 2 );\u003Ch3>Support\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Need help or have suggestions?\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fservicios.ayudawp.com\" rel=\"nofollow ugc\">Official website\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fscheduled-posts-showcase\u002F\" rel=\"ugc\">WordPress support forum\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002FAyudaWordPressES\" rel=\"nofollow ugc\">YouTube channel\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fayudawp.com\" rel=\"nofollow ugc\">Documentation and tutorials\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Love the plugin? Please leave us a 5-star review and help spread the word!\u003C\u002Fp>\n\u003Ch3>About AyudaWP.com\u003C\u002Fh3>\n\u003Cp>We are specialists in WordPress security, SEO, and performance optimization plugins. We create tools that solve real problems for WordPress site owners while maintaining the highest coding standards and accessibility requirements.\u003C\u002Fp>\n","Display your scheduled and future posts on the frontend without generating 404 links. Show visitors what's coming next.",196,"2026-02-26T13:13:00.000Z","5.8","7.4",[124,75,125,126,127],"content-schedule","future-posts","scheduled-posts","upcoming-posts","https:\u002F\u002Fservicios.ayudawp.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fscheduled-posts-showcase.1.0.0.zip",{"attackSurface":131,"codeSignals":190,"taintFlows":204,"riskAssessment":223,"analyzedAt":229},{"hooks":132,"ajaxHandlers":182,"restRoutes":183,"shortcodes":184,"cronEvents":185,"entryPointCount":13,"unprotectedCount":13},[133,139,142,147,150,154,158,163,166,171,173,178],{"type":134,"name":135,"callback":136,"file":137,"line":138},"filter","manage_posts_columns","column_header","src\\Columns.php",19,{"type":134,"name":140,"callback":136,"file":137,"line":141},"manage_pages_columns",20,{"type":143,"name":144,"callback":145,"priority":85,"file":137,"line":146},"action","manage_posts_custom_column","column_content",23,{"type":143,"name":148,"callback":145,"priority":85,"file":137,"line":149},"manage_pages_custom_column",24,{"type":143,"name":151,"callback":152,"file":137,"line":153},"init","_register_sorting_hooks",27,{"type":134,"name":155,"callback":156,"file":137,"line":157},"request","column_depublish_date_sort",28,{"type":143,"name":159,"callback":160,"file":161,"line":162},"post_submitbox_misc_actions","render","src\\Metabox.php",18,{"type":143,"name":164,"callback":165,"file":161,"line":138},"save_post","save_meta",{"type":143,"name":167,"callback":168,"file":169,"line":170},"depublish_post","check_and_depublish_post","src\\Post.php",17,{"type":143,"name":164,"callback":23,"priority":60,"file":172,"line":170},"src\\Scheduler.php",{"type":143,"name":174,"callback":175,"file":176,"line":177},"admin_enqueue_scripts","load_assets","wp-depublish-posts.php",43,{"type":143,"name":179,"callback":180,"file":176,"line":181},"plugins_loaded","load_textdomain",46,[],[],[],[186,188],{"hook":167,"callback":167,"file":169,"line":187},50,{"hook":167,"callback":167,"file":172,"line":189},38,{"dangerousFunctions":191,"sqlUsage":192,"outputEscaping":194,"fileOperations":13,"externalRequests":13,"nonceChecks":87,"capabilityChecks":104,"bundledLibraries":203},[],{"prepared":13,"raw":13,"locations":193},[],{"escaped":87,"rawEcho":195,"locations":196},3,[197,200,202],{"file":161,"line":198,"context":199},181,"raw output",{"file":161,"line":201,"context":199},194,{"file":161,"line":119,"context":199},[],[205],{"entryPoint":206,"graph":207,"unsanitizedCount":13,"severity":222},"\u003CMetabox> (src\\Metabox.php:0)",{"nodes":208,"edges":219},[209,214],{"id":210,"type":211,"label":212,"file":161,"line":213},"n0","source","$_POST",64,{"id":215,"type":216,"label":217,"file":161,"line":198,"wp_function":218},"n1","sink","echo() [XSS]","echo",[220],{"from":210,"to":215,"sanitized":221},true,"low",{"summary":224,"deductions":225},"The 'depublish-posts' plugin v1.0.0 exhibits a generally strong security posture based on the provided static analysis.  It demonstrates good practices by avoiding dangerous functions, utilizing prepared statements for all SQL queries, and implementing nonce and capability checks for its identified entry points. The absence of file operations and external HTTP requests further reduces potential attack vectors.  The taint analysis also reveals no critical or high severity flows, indicating that user input is not being mishandled in a way that could lead to immediate compromise.\n\nHowever, a notable concern arises from the output escaping. With 50% of its outputs being unescaped, there is a tangible risk of Cross-Site Scripting (XSS) vulnerabilities. While the attack surface is small and protected, a successful XSS attack could still have significant consequences, such as session hijacking or defacement. The plugin's history of zero known CVEs is a positive indicator of past security diligence, but it does not negate the immediate risks identified in the current static analysis.\n\nIn conclusion, 'depublish-posts' v1.0.0 is a relatively secure plugin with a low overall attack surface and good adherence to fundamental security practices. The primary weakness lies in its output escaping, which needs to be addressed to mitigate XSS risks. Users should be aware of this potential vulnerability while benefiting from the plugin's generally robust security.",[226],{"reason":227,"points":228},"Unescaped output risk (XSS)",5,"2026-03-16T22:31:49.237Z",{"wat":231,"direct":238},{"assetPaths":232,"generatorPatterns":235,"scriptPaths":236,"versionParams":237},[233,234],"\u002Fwp-content\u002Fplugins\u002Fdepublish-posts\u002Fassets\u002Fwp-depublish-posts.css","\u002Fwp-content\u002Fplugins\u002Fdepublish-posts\u002Fassets\u002Fwp-depublish-posts.js",[],[234],[],{"cssClasses":239,"htmlComments":240,"htmlAttributes":241,"restEndpoints":242,"jsGlobals":243,"shortcodeOutput":244},[],[],[],[],[],[]]