[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fXlAA2X6XjL8JzCu2qMwh5GcVlNmXRCZfSgYc34Vl5LQ":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":16,"tags":17,"homepage":23,"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":37,"analysis":92,"fingerprints":366},"poly-pin-manager","Poly Pin Manager","2.4.0","polyxgo","https:\u002F\u002Fprofiles.wordpress.org\u002Fsanddesert88\u002F","\u003Cp>Pin Manager provides a feature that supports pinning plugins, themes, categories, posts, pages, and tags to the top of the list for easy handling. Additionally, the note feature corresponding to each pinned element will make it easier for you to manage them on the site.\u003C\u002Fp>\n\u003Ch4>Try a Live Demo\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugins.wikipoly.com\u002F\" rel=\"nofollow ugc\">View a demo website\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Watch a Tutorial\u003C\u002Fh4>\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\u002FpZL4Pwxnzf4?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\u003Ch4>Current Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Pin\u002F Unpin\u003C\u002Fstrong>: Pin Plugins, Themes, Tags, and Categories.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Code Editor\u003C\u002Fstrong>: Quick Access to Code Editor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Note\u003C\u002Fstrong>: Attach Notes and Descriptions.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quick Access Menu\u003C\u002Fstrong>: Create Custom Menu Lists.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Language Switcher\u003C\u002Fstrong>: Language Menu on the Top Bar.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, please visit \u003Ca href=\"https:\u002F\u002Fwikipoly.com\u002Fen\u002Fpoly-pin-manager\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fwikipoly.com\u002Fen\u002Fpoly-pin-manager\u002F\u003C\u002Fa>\u003C\u002Fp>\n","Easily pin plugins, themes, categories, and posts to the top of the admin list, with added notes for better management and quick access.",20,722,0,"2025-05-19T21:13:00.000Z","6.8.5","",[18,19,20,21,22],"pinning-plugins","pinning-themes","quick-access","quick-menu","wordpress-pinning","https:\u002F\u002Fwikipoly.com\u002Fen\u002Fpoly-pin-manager\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpoly-pin-manager.2.4.0.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":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"sanddesert88",6,170,97,30,92,"2026-04-04T08:31:02.562Z",[38,56,76],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":13,"num_ratings":13,"last_updated":48,"tested_up_to":49,"requires_at_least":50,"requires_php":16,"tags":51,"homepage":53,"download_link":54,"security_score":55,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"wp-keyboard-shortcuts","WP Keyboard Shortcuts Lite","1.5","evgendob","https:\u002F\u002Fprofiles.wordpress.org\u002Fevgendob\u002F","\u003Cp>What this plugin do?\u003C\u002Fp>\n\u003Cp>Do you use shortcuts in on your computer? Like open some programs with shortcuts, open menues, manipulate with data ? With this plugin you can have same functionality inside WordPress.\u003C\u002Fp>\n\u003Cp>WordPress keyboard Shortcuts plugin allow you to bind keyboard shortcuts to different WordPress elements and events. Like click on some button, go to menu etc. Imagine you can manipulate all menus, and elements with only keyboard.\u003C\u002Fp>\n\u003Cp>Want to Add Post with just one click ? – No problem!\u003Cbr \u002F>\nWant to navigate via posts, select them, make actions with them ? – No problem, just bind all combinations you need to actions and script will do all things for you.\u003C\u002Fp>\n\u003Cp>For example:\u003Cbr \u002F>\nImagine you write different articles. You need to Add set of articles  – So you will need to add content, then add category, set featured image, select post type. With this plugin you can do it just with 3 clicks. Just bind combinations you need to actions and do all things extremely fast.\u003C\u002Fp>\n\u003Cp>Lite version allow you to use up to 3 different combinations. Full version allow you to use unlimited amount of combinations\u002Fshortcuts\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodecanyon.net\u002Fitem\u002Fwordpress-keyboard-shortcuts\u002F20922588\" rel=\"nofollow ugc\">Full Version\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","With this plugin you can bind any keyboard combination to different Wordpres actions and menus.  So Just try it!",10,1078,"2018-08-11T13:20:00.000Z","4.7.32","3.5",[52,20],"keyboard-shortcut","https:\u002F\u002Fcodecanyon.net\u002Fitem\u002Fwordpress-keyboard-shortcuts\u002F20922588","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-keyboard-shortcuts.zip",85,{"slug":57,"name":58,"version":59,"author":60,"author_profile":61,"description":62,"short_description":63,"active_installs":13,"downloaded":64,"rating":13,"num_ratings":13,"last_updated":16,"tested_up_to":65,"requires_at_least":66,"requires_php":67,"tags":68,"homepage":73,"download_link":74,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":75},"quickpick","QuickPick","1.0.4","Alexei Samarschi","https:\u002F\u002Fprofiles.wordpress.org\u002Falexus450\u002F","\u003Cp>QuickPick displays your last 5 edited posts or pages in a convenient dropdown menu, allowing you to quickly jump to content you’ve been working on. Perfect for content creators, editors, and developers who frequently edit multiple posts or pages.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Quick access to recently edited posts and pages\u003Cbr \u002F>\n* Clean, intuitive dropdown interface\u003Cbr \u002F>\n* Homepage link integration for pages\u003Cbr \u002F>\n* Set any page as homepage with one click (AJAX-powered)\u003Cbr \u002F>\n* Lightweight and fast\u003Cbr \u002F>\n* No configuration required\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Perfect for:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Content creators who work on multiple posts\u003Cbr \u002F>\n* Editors managing various pages\u003Cbr \u002F>\n* Developers who frequently edit content\u003Cbr \u002F>\n* Anyone who wants to save time navigating WordPress admin\u003C\u002Fp>\n","QuickPick is a tiny WordPress plugin that will help you save time on finding recently edited posts or pages.",919,"6.9.4","5.0","5.6",[69,70,71,20,72],"admin","homepage","productivity","recently-edited","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fquickpick","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fquickpick.1.0.4.zip","2026-03-15T10:48:56.248Z",{"slug":77,"name":78,"version":79,"author":80,"author_profile":81,"description":82,"short_description":83,"active_installs":13,"downloaded":84,"rating":13,"num_ratings":13,"last_updated":16,"tested_up_to":65,"requires_at_least":66,"requires_php":85,"tags":86,"homepage":90,"download_link":91,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":75},"simple-launchpad","Simple LaunchPad","3.1.5","Rafael Minuesa","https:\u002F\u002Fprofiles.wordpress.org\u002Frafaelminuesa\u002F","\u003Cp>\u003Cstrong>Simple LaunchPad\u003C\u002Fstrong> appears as the first menu item in your WordPress admin, providing instant access to 20 carefully organized buttons across four categories: Content Management, Appearance, Administration, and WooCommerce.\u003C\u002Fp>\n\u003Ch4>Why This Plugin Exists\u003C\u002Fh4>\n\u003Cp>If you manage multiple WordPress installations with different plugins (like I do), you know the frustration: plugin developers arbitrarily decide where their menu entries appear, constantly pushing core WordPress menu items like Themes, Plugins, and Settings up and down the sidebar. One site has “Plugins” at position 5, another at position 12, and yet another at position 8. You’re forced to scroll endlessly, hunting for the same common entries you use every day.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>I got tired of complaining about it, so I did something about it.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Simple LaunchPad puts all your most-used admin pages in ONE predictable location at the top of your admin menu. No more scrolling. No more hunting. Just click and go. This is my contribution to the WordPress community—a solution to a problem we’ve all experienced but rarely talk about.\u003C\u002Fp>\n\u003Cp>Perfect for:\u003Cbr \u002F>\n* \u003Cstrong>Site administrators\u003C\u002Fstrong> who want faster navigation\u003Cbr \u002F>\n* \u003Cstrong>Agencies\u003C\u002Fstrong> managing multiple client sites\u003Cbr \u002F>\n* \u003Cstrong>Developers\u003C\u002Fstrong> who need quick access to tools\u003Cbr \u002F>\n* \u003Cstrong>Content teams\u003C\u002Fstrong> focusing on specific admin areas\u003Cbr \u002F>\n* \u003Cstrong>Users with visual disabilities\u003C\u002Fstrong> who rely on screen readers and predictable navigation\u003C\u002Fp>\n\u003Ch4>Accessibility Features\u003C\u002Fh4>\n\u003Cp>Simple LaunchPad is fully \u003Cstrong>WCAG 2.1 AA compliant\u003C\u002Fstrong> and specifically designed to help users with visual disabilities navigate WordPress more efficiently.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why This Matters for Accessibility:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>When you manage multiple WordPress sites with different plugins, the admin menu becomes unpredictable. One site has “Posts” at position 3, another at position 7. Plugin developers arbitrarily inject their menu items anywhere, constantly shifting core WordPress items up and down. For sighted users, this is frustrating. \u003Cstrong>For screen reader users, this is a nightmare.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Every time a screen reader user logs into a different site, they must:\u003Cbr \u002F>\n– Navigate through the entire menu structure to find familiar items\u003Cbr \u002F>\n– Re-learn where “Posts”, “Pages”, “Plugins”, and “Settings” are located\u003Cbr \u002F>\n– Tab through dozens of unfamiliar plugin menu items just to reach core WordPress functions\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Simple LaunchPad solves this by providing ONE predictable location\u003C\u002Fstrong> at the top of the admin menu where all essential WordPress areas are always accessible.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Accessibility Compliance Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>✓ \u003Cstrong>Keyboard Navigation:\u003C\u002Fstrong> Full keyboard support with visible focus states\u003Cbr \u002F>\n✓ \u003Cstrong>Global Keyboard Shortcut:\u003C\u002Fstrong> Press Alt+Shift+L (Windows\u002FLinux) or Control+Option+L (Mac) to instantly open LaunchPad from anywhere in WordPress admin\u003Cbr \u002F>\n✓ \u003Cstrong>Screen Reader Support:\u003C\u002Fstrong> Proper ARIA labels and semantic HTML structure\u003Cbr \u002F>\n✓ \u003Cstrong>Skip Links:\u003C\u002Fstrong> “Skip to admin shortcuts” link for faster navigation\u003Cbr \u002F>\n✓ \u003Cstrong>Descriptive Labels:\u003C\u002Fstrong> Each button includes clear, descriptive aria-labels (e.g., “Go to Posts”, “Go to Settings”)\u003Cbr \u002F>\n✓ \u003Cstrong>Icon Accessibility:\u003C\u002Fstrong> All icons are properly marked as decorative (\u003Ccode>aria-hidden=\"true\"\u003C\u002Fcode>)\u003Cbr \u002F>\n✓ \u003Cstrong>Semantic HTML:\u003C\u002Fstrong> Proper use of navigation landmarks and heading structure\u003Cbr \u002F>\n✓ \u003Cstrong>Large Click Targets:\u003C\u002Fstrong> 64px icons with generous padding meet WCAG touch target guidelines\u003Cbr \u002F>\n✓ \u003Cstrong>Focus Management:\u003C\u002Fstrong> Clear visual focus indicators with high contrast\u003Cbr \u002F>\n✓ \u003Cstrong>Consistent Location:\u003C\u002Fstrong> Always appears as the first menu item for predictable navigation\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Real-World Impact:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Instead of tabbing through 20+ menu items that change position on every site, screen reader users can:\u003Cbr \u002F>\n1. Log in to WordPress\u003Cbr \u002F>\n2. Tab once to “LaunchPad” (always first in the menu)\u003Cbr \u002F>\n3. Access any of 15 core WordPress areas with predictable, consistent labels\u003C\u002Fp>\n\u003Cp>This reduces cognitive load, speeds up navigation, and makes WordPress administration accessible to everyone—not just sighted users who can visually scan the menu.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>🎯 Quick Access Buttons\u003C\u002Fstrong>\u003Cbr \u002F>\n* 20 pre-configured buttons organized in 4 logical rows (5 buttons each)\u003Cbr \u002F>\n  – \u003Cstrong>Row 1:\u003C\u002Fstrong> Posts, Categories, Tags, Pages, Media\u003Cbr \u002F>\n  – \u003Cstrong>Row 2:\u003C\u002Fstrong> Themes, Widgets, Menus, Customizer, Plugins\u003Cbr \u002F>\n  – \u003Cstrong>Row 3:\u003C\u002Fstrong> Users, Settings, Tools, Updates, Site Health\u003Cbr \u002F>\n  – \u003Cstrong>Row 4:\u003C\u002Fstrong> WooCommerce, WC Settings, Orders, Products, Product Categories (when WooCommerce is active)\u003Cbr \u002F>\n* One-click access to any WordPress admin page\u003Cbr \u002F>\n* Visual icons using WordPress Dashicons\u003Cbr \u002F>\n* Fully customizable button order via drag-and-drop\u003Cbr \u002F>\n* WooCommerce integration with HPOS support\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎨 Full Customization\u003C\u002Fstrong>\u003Cbr \u002F>\n* Enable\u002Fdisable individual buttons\u003Cbr \u002F>\n* Reorder buttons via intuitive drag-and-drop interface\u003Cbr \u002F>\n* Customize text colors (normal and hover states)\u003Cbr \u002F>\n* Customize background colors (normal and hover states)\u003Cbr \u002F>\n* Responsive design that works on all devices\u003Cbr \u002F>\n* Dark mode support\u003C\u002Fp>\n\u003Cp>\u003Cstrong>👥 Role-Based Visibility\u003C\u002Fstrong>\u003Cbr \u002F>\n* Control which user roles can see each button\u003Cbr \u002F>\n* Capability-based security (respects WordPress permissions)\u003Cbr \u002F>\n* Granular per-button access control\u003Cbr \u002F>\n* Perfect for multi-user sites with different team roles\u003C\u002Fp>\n\u003Cp>\u003Cstrong>⚡ Performance\u003C\u002Fstrong>\u003Cbr \u002F>\n* Lightweight and fast\u003Cbr \u002F>\n* Assets only load where needed\u003Cbr \u002F>\n* Clean, semantic code\u003Cbr \u002F>\n* No jQuery dependencies (except admin)\u003Cbr \u002F>\n* Optimized for WordPress standards\u003C\u002Fp>\n\u003Cp>\u003Cstrong>♿ Accessibility\u003C\u002Fstrong>\u003Cbr \u002F>\n* WCAG 2.1 AA compliant\u003Cbr \u002F>\n* Full keyboard navigation support\u003Cbr \u002F>\n* Global keyboard shortcut: Alt+Shift+L to open LaunchPad from anywhere\u003Cbr \u002F>\n* Screen reader optimized with proper ARIA labels\u003Cbr \u002F>\n* Skip links for faster navigation\u003Cbr \u002F>\n* Large click targets (64px icons)\u003Cbr \u002F>\n* Consistent, predictable menu position\u003Cbr \u002F>\n* Reduces cognitive load for users with disabilities\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🔧 Developer Friendly\u003C\u002Fstrong>\u003Cbr \u002F>\n* Extensible with WordPress filters and hooks\u003Cbr \u002F>\n* Well-documented code with PHPDoc comments\u003Cbr \u002F>\n* Clean, object-oriented architecture\u003Cbr \u002F>\n* Translation-ready (i18n)\u003Cbr \u002F>\n* Compatible with WordPress Coding Standards\u003C\u002Fp>\n\u003Ch4>Use Cases\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>For Bloggers:\u003C\u002Fstrong>\u003Cbr \u002F>\nQuickly access Posts, Media, and Comments without navigating through menus.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For E-commerce Sites:\u003C\u002Fstrong>\u003Cbr \u002F>\nAdd custom buttons for WooCommerce pages like Products, Orders, and Coupons.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For Agencies:\u003C\u002Fstrong>\u003Cbr \u002F>\nConfigure different button layouts for different client sites or user roles.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For Developers:\u003C\u002Fstrong>\u003Cbr \u002F>\nExtend the plugin with custom buttons using the provided filter hooks.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For Users with Visual Disabilities:\u003C\u002Fstrong>\u003Cbr \u002F>\nAccess all core WordPress admin areas from one predictable location with full screen reader support. No more hunting through constantly changing menu structures.\u003C\u002Fp>\n\u003Ch4>Developer Hooks\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Filters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>simple_launchpad_default_buttons - Modify or add default buttons\nsimple_launchpad_buttons - Modify buttons before rendering\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Example – Add Custom Button:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('simple_launchpad_default_buttons', function($buttons) {\n    $buttons['my_custom'] = array(\n        'label' => 'Custom Area',\n        'url' => 'admin.php?page=my-custom-page',\n        'icon' => 'dashicons-admin-generic',\n        'capability' => 'manage_options'\n    );\n    return $buttons;\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Translations\u003C\u002Fh4>\n\u003Cp>Simple LaunchPad is translation-ready! Help translate it into your language:\u003Cbr \u002F>\n* Text Domain: simple-launchpad\u003Cbr \u002F>\n* All strings wrapped with proper i18n functions\u003Cbr \u002F>\n* POT file included for translators\u003C\u002Fp>\n\u003Ch4>Privacy\u003C\u002Fh4>\n\u003Cp>Simple LaunchPad does not:\u003Cbr \u002F>\n* Collect any user data\u003Cbr \u002F>\n* Use cookies\u003Cbr \u002F>\n* Connect to external services\u003Cbr \u002F>\n* Track analytics\u003C\u002Fp>\n\u003Cp>All settings are stored locally in your WordPress database.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Developed by \u003Ca href=\"https:\u002F\u002Fprowoos.com\" rel=\"nofollow ugc\">Rafael Minuesa\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, feature requests, or bug reports, please visit:\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fsimple-launchpad\u002F\" rel=\"ugc\">Plugin Support Forum\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frafael-minuesa\u002Fsimple-launchpad\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Donations\u003C\u002Fh3>\n\u003Cp>If you find this plugin helpful, please consider:\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fsimple-launchpad\u002Freviews\u002F\" rel=\"ugc\">Leaving a 5-star review\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frafael-minuesa\u002Fsimple-launchpad\" rel=\"nofollow ugc\">Contributing on GitHub\u003C\u002Fa>\u003C\u002Fp>\n","WCAG 2.1 AA accessible admin dashboard with quick-access buttons to all WordPress areas—perfect for screen reader users.",169,"7.4",[69,87,88,89,20],"buttons","customization","dashboard","https:\u002F\u002Fgithub.com\u002Frafael-minuesa\u002Fsimple-launchpad","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimple-launchpad.3.1.5.zip",{"attackSurface":93,"codeSignals":240,"taintFlows":256,"riskAssessment":354,"analyzedAt":365},{"hooks":94,"ajaxHandlers":196,"restRoutes":236,"shortcodes":237,"cronEvents":238,"entryPointCount":162,"unprotectedCount":239},[95,101,105,109,113,116,120,124,128,131,134,137,140,144,148,151,155,157,159,163,167,170,172,175,179,182,184,186,191,192],{"type":96,"name":97,"callback":98,"file":99,"line":100},"action","init","activate_actions","core\\class-ppm-main.php",8,{"type":96,"name":102,"callback":103,"file":99,"line":104},"admin_menu","add_plugin_menu",33,{"type":96,"name":106,"callback":107,"file":99,"line":108},"admin_enqueue_scripts","enqueue_custom_scripts",34,{"type":110,"name":111,"callback":111,"priority":46,"file":99,"line":112},"filter","plugin_row_meta",37,{"type":96,"name":106,"callback":107,"file":114,"line":115},"includes\\class-ppm-categories.php",9,{"type":110,"name":117,"callback":118,"priority":46,"file":114,"line":119},"get_terms","pin_terms_to_top",13,{"type":96,"name":121,"callback":122,"priority":46,"file":114,"line":123},"admin_init","admin_init_plugin",14,{"type":96,"name":125,"callback":126,"file":127,"line":100},"wp_loaded","handle_language_change_request","includes\\class-ppm-language.php",{"type":96,"name":129,"callback":130,"priority":25,"file":127,"line":115},"admin_bar_menu","add_language_menu_to_admin_bar",{"type":110,"name":132,"callback":133,"file":127,"line":46},"locale","set_locale",{"type":96,"name":106,"callback":107,"file":135,"line":136},"includes\\class-ppm-plugins.php",11,{"type":96,"name":138,"callback":139,"file":135,"line":119},"pre_current_active_plugins","pin_plugins_to_top",{"type":110,"name":141,"callback":142,"priority":46,"file":135,"line":143},"plugin_action_links","handle_plugin_action_link",15,{"type":96,"name":145,"callback":146,"priority":46,"file":135,"line":147},"edit_term","save_custom_term_meta",22,{"type":96,"name":149,"callback":146,"priority":46,"file":135,"line":150},"create_term",23,{"type":96,"name":152,"callback":153,"priority":46,"file":135,"line":154},"delete_term","delete_custom_term_meta",24,{"type":96,"name":106,"callback":107,"file":156,"line":115},"includes\\class-ppm-posts.php",{"type":96,"name":106,"callback":158,"file":156,"line":46},"export_selected_terms_to_js_for_reorder_terms",{"type":110,"name":160,"callback":161,"file":156,"line":162},"manage_pages_columns","add_pin_column",18,{"type":96,"name":164,"callback":165,"priority":46,"file":156,"line":166},"manage_pages_custom_column","render_pin_column_content",19,{"type":110,"name":168,"callback":161,"file":156,"line":169},"manage_posts_columns",21,{"type":96,"name":171,"callback":165,"priority":46,"file":156,"line":147},"manage_posts_custom_column",{"type":110,"name":173,"callback":174,"file":156,"line":154},"pre_get_posts","pin_posts_to_top",{"type":110,"name":176,"callback":177,"priority":46,"file":156,"line":178},"posts_orderby","closure",238,{"type":96,"name":106,"callback":180,"file":181,"line":100},"enqueue_scripts","includes\\class-ppm-quick-menu.php",{"type":96,"name":129,"callback":183,"priority":25,"file":181,"line":46},"add_custom_admin_bar_menu",{"type":96,"name":106,"callback":180,"file":185,"line":100},"includes\\class-ppm-settings.php",{"type":110,"name":187,"callback":188,"file":189,"line":190},"wp_prepare_themes_for_js","add_icons_to_themes","includes\\class-ppm-themes.php",12,{"type":96,"name":106,"callback":107,"file":189,"line":119},{"type":96,"name":193,"callback":194,"file":195,"line":147},"plugins_loaded","poly_pin_manager_init","poly-pin-manager.php",[197,201,203,205,208,210,212,214,216,218,220,222,224,226,228,230,232,234],{"action":198,"nopriv":199,"callback":198,"hasNonce":199,"hasCapCheck":200,"file":114,"line":46},"add_term_note",false,true,{"action":202,"nopriv":199,"callback":202,"hasNonce":199,"hasCapCheck":200,"file":114,"line":136},"edit_term_note",{"action":204,"nopriv":199,"callback":204,"hasNonce":199,"hasCapCheck":200,"file":114,"line":190},"unpin_term",{"action":206,"nopriv":199,"callback":206,"hasNonce":199,"hasCapCheck":200,"file":135,"line":207},"add_plugin_note",17,{"action":209,"nopriv":199,"callback":209,"hasNonce":199,"hasCapCheck":200,"file":135,"line":162},"edit_plugin_note",{"action":211,"nopriv":199,"callback":211,"hasNonce":199,"hasCapCheck":200,"file":135,"line":166},"unpin_plugin",{"action":213,"nopriv":199,"callback":213,"hasNonce":199,"hasCapCheck":200,"file":135,"line":11},"poly_pin_manager_handle_deactivation",{"action":215,"nopriv":199,"callback":215,"hasNonce":199,"hasCapCheck":200,"file":156,"line":136},"add_post_note",{"action":217,"nopriv":199,"callback":217,"hasNonce":199,"hasCapCheck":200,"file":156,"line":190},"edit_post_note",{"action":219,"nopriv":199,"callback":219,"hasNonce":199,"hasCapCheck":200,"file":156,"line":119},"unpin_post",{"action":221,"nopriv":199,"callback":221,"hasNonce":199,"hasCapCheck":200,"file":181,"line":115},"save_quick_access_menu",{"action":223,"nopriv":199,"callback":223,"hasNonce":199,"hasCapCheck":199,"file":185,"line":115},"poly_pin_reset_pinning",{"action":225,"nopriv":199,"callback":225,"hasNonce":199,"hasCapCheck":199,"file":185,"line":46},"poly_pin_toggle_quick_pinning",{"action":227,"nopriv":199,"callback":227,"hasNonce":199,"hasCapCheck":199,"file":185,"line":136},"poly_pin_enable_edit_plugins_themes",{"action":229,"nopriv":199,"callback":229,"hasNonce":199,"hasCapCheck":199,"file":185,"line":119},"poly_pin_toggle_type",{"action":231,"nopriv":199,"callback":231,"hasNonce":199,"hasCapCheck":200,"file":189,"line":115},"add_theme_note",{"action":233,"nopriv":199,"callback":233,"hasNonce":199,"hasCapCheck":200,"file":189,"line":46},"edit_theme_note",{"action":235,"nopriv":199,"callback":235,"hasNonce":199,"hasCapCheck":200,"file":189,"line":136},"unpin_theme",[],[],[],4,{"dangerousFunctions":241,"sqlUsage":242,"outputEscaping":244,"fileOperations":13,"externalRequests":13,"nonceChecks":253,"capabilityChecks":254,"bundledLibraries":255},[],{"prepared":13,"raw":13,"locations":243},[],{"escaped":245,"rawEcho":239,"locations":246},129,[247,250,251,252],{"file":185,"line":248,"context":249},51,"raw output",{"file":185,"line":248,"context":249},{"file":185,"line":248,"context":249},{"file":185,"line":248,"context":249},2,27,[],[257,275,283,296,306,314,325,335,345],{"entryPoint":258,"graph":259,"unsanitizedCount":13,"severity":274},"handle_language_change_request (includes\\class-ppm-language.php:103)",{"nodes":260,"edges":272},[261,266],{"id":262,"type":263,"label":264,"file":127,"line":265},"n0","source","$_GET",106,{"id":267,"type":268,"label":269,"file":127,"line":270,"wp_function":271},"n1","sink","update_option() [Settings Manipulation]",108,"update_option",[273],{"from":262,"to":267,"sanitized":200},"low",{"entryPoint":276,"graph":277,"unsanitizedCount":13,"severity":274},"\u003Cclass-ppm-language> (includes\\class-ppm-language.php:0)",{"nodes":278,"edges":281},[279,280],{"id":262,"type":263,"label":264,"file":127,"line":265},{"id":267,"type":268,"label":269,"file":127,"line":270,"wp_function":271},[282],{"from":262,"to":267,"sanitized":200},{"entryPoint":284,"graph":285,"unsanitizedCount":13,"severity":274},"\u003Cclass-ppm-posts> (includes\\class-ppm-posts.php:0)",{"nodes":286,"edges":294},[287,290],{"id":262,"type":263,"label":288,"file":156,"line":289},"$_POST",163,{"id":267,"type":268,"label":291,"file":156,"line":292,"wp_function":293},"echo() [XSS]",283,"echo",[295],{"from":262,"to":267,"sanitized":200},{"entryPoint":297,"graph":298,"unsanitizedCount":13,"severity":274},"save_quick_access_menu (includes\\class-ppm-quick-menu.php:59)",{"nodes":299,"edges":304},[300,302],{"id":262,"type":263,"label":288,"file":181,"line":301},68,{"id":267,"type":268,"label":269,"file":181,"line":303,"wp_function":271},72,[305],{"from":262,"to":267,"sanitized":200},{"entryPoint":307,"graph":308,"unsanitizedCount":13,"severity":274},"\u003Cclass-ppm-quick-menu> (includes\\class-ppm-quick-menu.php:0)",{"nodes":309,"edges":312},[310,311],{"id":262,"type":263,"label":288,"file":181,"line":301},{"id":267,"type":268,"label":269,"file":181,"line":303,"wp_function":271},[313],{"from":262,"to":267,"sanitized":200},{"entryPoint":315,"graph":316,"unsanitizedCount":324,"severity":274},"poly_pin_reset_pinning (includes\\class-ppm-settings.php:118)",{"nodes":317,"edges":322},[318,320],{"id":262,"type":263,"label":288,"file":185,"line":319},127,{"id":267,"type":268,"label":269,"file":185,"line":321,"wp_function":271},130,[323],{"from":262,"to":267,"sanitized":199},1,{"entryPoint":326,"graph":327,"unsanitizedCount":324,"severity":274},"poly_pin_toggle_quick_pinning (includes\\class-ppm-settings.php:136)",{"nodes":328,"edges":333},[329,331],{"id":262,"type":263,"label":288,"file":185,"line":330},142,{"id":267,"type":268,"label":269,"file":185,"line":332,"wp_function":271},143,[334],{"from":262,"to":267,"sanitized":199},{"entryPoint":336,"graph":337,"unsanitizedCount":324,"severity":274},"poly_pin_enable_edit_plugins_themes (includes\\class-ppm-settings.php:148)",{"nodes":338,"edges":343},[339,341],{"id":262,"type":263,"label":288,"file":185,"line":340},154,{"id":267,"type":268,"label":269,"file":185,"line":342,"wp_function":271},155,[344],{"from":262,"to":267,"sanitized":199},{"entryPoint":346,"graph":347,"unsanitizedCount":13,"severity":274},"\u003Cclass-ppm-settings> (includes\\class-ppm-settings.php:0)",{"nodes":348,"edges":352},[349,351],{"id":262,"type":263,"label":350,"file":185,"line":319},"$_POST (x3)",{"id":267,"type":268,"label":269,"file":185,"line":321,"wp_function":271},[353],{"from":262,"to":267,"sanitized":200},{"summary":355,"deductions":356},"The \"poly-pin-manager\" plugin v2.4.0 exhibits a generally good security posture with several positive indicators. The complete absence of SQL injection vulnerabilities due to the use of prepared statements is a significant strength. Furthermore, the plugin demonstrates excellent output sanitization practices, with 97% of outputs properly escaped, minimizing the risk of cross-site scripting (XSS) attacks. The lack of known CVEs and a clean vulnerability history also suggests a commitment to security or a lack of past exploits.\n\nHowever, the plugin does present some areas of concern that warrant attention. The presence of 18 AJAX handlers, with a notable 4 of them lacking authentication checks, creates a substantial attack surface. This is a critical oversight that could allow unauthenticated users to trigger sensitive functionalities. While the taint analysis did not reveal critical or high severity issues, the 3 flows with unsanitized paths are a potential risk, even if their severity is not immediately apparent from the provided data. The limited number of nonce checks (2) also raises a slight concern regarding the protection of AJAX actions.\n\nIn conclusion, \"poly-pin-manager\" v2.4.0 has a strong foundation in secure coding practices, particularly regarding database interactions and output sanitization. The absence of past vulnerabilities is encouraging. Nevertheless, the significant number of unprotected AJAX endpoints is a considerable weakness that significantly elevates the risk profile. Addressing these unauthenticated entry points should be a top priority to improve the plugin's overall security.",[357,359,362],{"reason":358,"points":46},"Unprotected AJAX handlers present",{"reason":360,"points":361},"Flows with unsanitized paths detected",5,{"reason":363,"points":364},"Limited nonce checks",3,"2026-03-16T23:07:27.697Z",{"wat":367,"direct":382},{"assetPaths":368,"generatorPatterns":374,"scriptPaths":375,"versionParams":376},[369,370,371,372,373],"\u002Fwp-content\u002Fplugins\u002Fpoly-pin-manager\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fpoly-pin-manager\u002Flib\u002Fsortablejs\u002F1.15.2\u002FSortable.min.js","\u002Fwp-content\u002Fplugins\u002Fpoly-pin-manager\u002Flib\u002Fsweetalert2\u002F11.4.8\u002Fsweetalert2.min.js","\u002Fwp-content\u002Fplugins\u002Fpoly-pin-manager\u002Flib\u002Fsweetalert2\u002F11.4.8\u002Fsweetalert2.min.css","\u002Fwp-content\u002Fplugins\u002Fpoly-pin-manager\u002Fjs\u002Fcommon.js",[],[],[377,378,379,380,381],"poly-pin-manager\u002Fcss\u002Fstyle.css?ver=","poly-pin-manager\u002Flib\u002Fsortablejs\u002F1.15.2\u002FSortable.min.js?ver=","poly-pin-manager\u002Flib\u002Fsweetalert2\u002F11.4.8\u002Fsweetalert2.min.js?ver=","poly-pin-manager\u002Flib\u002Fsweetalert2\u002F11.4.8\u002Fsweetalert2.min.css?ver=","poly-pin-manager\u002Fjs\u002Fcommon.js?ver=",{"cssClasses":383,"htmlComments":384,"htmlAttributes":387,"restEndpoints":404,"jsGlobals":405,"shortcodeOutput":407},[],[385,386],"\u003C!-- Add \"Check for updates\" link to plugin list page -->","\u003C!-- Use thickbox -->",[388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403],"data-action=\"add_post_note\"","data-action=\"edit_post_note\"","data-action=\"unpin_post_note\"","data-action=\"add_categories_note\"","data-action=\"edit_categories_note\"","data-action=\"unpin_categories_note\"","data-action=\"add_theme_note\"","data-action=\"edit_theme_note\"","data-action=\"unpin_theme_note\"","data-action=\"add_plugin_note\"","data-action=\"edit_plugin_note\"","data-action=\"unpin_plugin_note\"","data-action=\"reset_pinning_note\"","data-action=\"active_pinning_by_type\"","data-action=\"poly_pin_toggle\"","data-action=\"save_quick_access_menu_note\"",[],[406],"window.poly_pin_manager",[]]