[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f9sapJ0Nu7lQyt369AuGp5L43y6rLT2ZaMgp4P_WBFmM":3,"$fDzm23zTyEpeZ9z6Hx9cKd19oN1trSoVi9ZNxerI2s_A":297,"$fem8amcwX3CGM_Yzu7U-HPu-GwBwUSBvKfgUYFaaCZ4k":301},{"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":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"discovery_status":29,"vulnerabilities":30,"developer":31,"crawl_stats":27,"alternatives":38,"analysis":136,"fingerprints":265},"link-shortcut","Link Shortcut","1.4","husani","https:\u002F\u002Fprofiles.wordpress.org\u002Fhusani\u002F","\u003Cp>Ever want your own shortcuts without mucking about with permalink structures?  The Link Shortcut plugin allows you to create short (random numbers and letters, or short words) URLs under your blog’s domain that redirect (301 or 302, your choice) a user to other pages, either in your site or on another site.\u003C\u002Fp>\n\u003Cp>In other words, instead of sending this url to the author’s plugin page:\u003Cbr \u002F>\nhttp:\u002F\u002Fwww.husani.com\u002Fventures\u002Fwordpress-plugins\u002Flinkshortcut\u002F\u003C\u002Fp>\n\u003Cp>This shortcut could be created simply by installing this plugin and adding a link, via the same traditional WordPress UI we all know and love:\u003Cbr \u002F>\nhttp:\u002F\u002Fwww.husani.com\u002Flink123\u003C\u002Fp>\n\u003Cp>You can also specify a specific “subdirectory” to be present in all Link Shortcut URLs:  yourblog\u002Fgo\u002F\u003Cem>STRING\u003C\u002Fem>, for example.\u003C\u002Fp>\n\u003Cp>YOU MUST USE NON-UGLY PERMALINKS FOR THIS PLUGIN TO WORK.  Your permalink structure cannot be yourblog.com?p=84, it must be date-based, name-based, etc.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>IMPORTANT:\u003C\u002Fstrong> Link Shortcut creates a table inside your database.  Upon deactivation, the plugin creates a backup table and copies records to it before removing the main table.  If you decide to activate the plugin again — or have installed an upgrade — it automatically copies your backed up links to the newly created table.  You can also delete the backup table if you remove Link Shortcut permanently.\u003C\u002Fp>\n\u003Cp>Changelog:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>1.4:\n\u003Cul>\n\u003Cli>Added configurable Redirect-Type (301, 302)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>1.3:\n\u003Cul>\n\u003Cli>Added ability to set default length\u003C\u002Fli>\n\u003Cli>Added ability to set directory name inside URL (yourblog.com\u002Fgo\u002F993ldx)\u003C\u002Fli>\n\u003Cli>Added data backup on plugin deactivation (read Installation for more details)\u003C\u002Fli>\n\u003Cli>Using _SERVER instead of WP_Query to account for WP version differences\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>1.2:\n\u003Cul>\n\u003Cli>Fixed WP 2.7 vs 2.7.1 bug\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>1.1:\n\u003Cul>\n\u003Cli>Fixed directory name bug\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Link Shortcut is released to the WordPress community under the GPL.  Please feel free to modify as you see fit, and if you find this plugin useful, donate to the author.  All feedback is welcome at wordpressplugins@husani.com, and you can visit Husani’s website at http:\u002F\u002Fwww.husani.com.\u003C\u002Fp>\n","Make TinyURL-like URLs (you.com\u002F33ks8s) that redirect to pages inside \u002F outside your blog.  Can also create human-readable aliases (you.com\u002Ffacebook).",30,9710,0,"2009-04-23T01:16:00.000Z","2.7.1","2.7","",[19,20,21,22,23],"link","links","permalink","redirect","shortcut","http:\u002F\u002Fwww.husani.com\u002Fventures\u002Fwordpress-plugins\u002Flinkshortcut","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortcut.1.4.zip",85,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},3,10040,89,408,71,"2026-05-19T22:53:54.445Z",[39,60,82,100,120],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":49,"num_ratings":50,"last_updated":51,"tested_up_to":52,"requires_at_least":53,"requires_php":17,"tags":54,"homepage":58,"download_link":59,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"advanced-permalinks","Advanced Permalinks","0.1.21","John Godley","https:\u002F\u002Fprofiles.wordpress.org\u002Fjohnny5\u002F","\u003Cp>Provides advanced permalink options that allow you to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Have multiple permalink structures.  Permalinks can be assigned to posts or ranges of posts\u003C\u002Fli>\n\u003Cli>301 redirect old permalink structures (many structures are allowed)\u003C\u002Fli>\n\u003Cli>Category-specific permalinks.  Posts in certain categories can be assigned a permalink structure\u003C\u002Fli>\n\u003Cli>No need to have a base to the category permalink!\u003C\u002Fli>\n\u003Cli>Change author permalinks\u003C\u002Fli>\n\u003Cli>Enable periods in permalinks – perfect for migrating old websites\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All permalinks are real permalinks and do not result in 301 redirections.  \u003Cem>This means you can change your permalink structure without\u003Cbr \u002F>\naffecting any existing posts and without losing any page rank.\u003C\u002Fem>  Any attempts to access posts in the wrong permalink structure will be\u003Cbr \u002F>\nautomatically redirected to the correct URL.\u003C\u002Fp>\n\u003Cp>Advanced Permalinks is available in:\u003Cbr \u002F>\n* English\u003Cbr \u002F>\n* Bulgarian (thanks to Alexander Dichev)\u003Cbr \u002F>\n* Belorussian (thanks to Marcis Gasuns)\u003Cbr \u002F>\n* Russian (thanks to Slava Mikheev)\u003Cbr \u002F>\n* Uzbekistan (thanks to Alexandra Bolshova)\u003Cbr \u002F>\n* Lithuanian (thanks to Nata Strazda at Web Hub)\u003C\u002Fp>\n\u003Ch4>Example 1: Migrating a permalink structure\u003C\u002Fh4>\n\u003Cp>Say you have an existing site with the default WordPress permalink structure \u003Ccode>\u002F%year%\u002F%monthnum%\u002F%day%\u002F%postname%\u002F\u003C\u002Fcode> and you decide you want to change it\u003Cbr \u002F>\nto a more keyword-heavy \u003Ccode>\u002F%category%\u002F%postname%\u002F\u003C\u002Fcode>.  If you change the permalink setting then all your old posts will be moved, and you will suffer a major loss\u003Cbr \u002F>\nof page rank (not to mention a lot of 404s).  With Advanced Permalinks you can define a specific permalink structure for all your old\u003Cbr \u002F>\nposts and then create a new permalink structure for new ones.  All your old posts will carry on living at the same URL as before, but all\u003Cbr \u002F>\nnew posts will be created using your new structure.\u003C\u002Fp>\n\u003Ch4>Example 2: Category-specific permalinks\u003C\u002Fh4>\n\u003Cp>Sometimes you want posts in a certain category to appear elsewhere on your site.  For example, your usual permalink structure may result in:\u003C\u002Fp>\n\u003Cp>\u002F2007\u002F05\u002F02\u002Fmy-review\u003C\u002Fp>\n\u003Cp>However, you want posts in the ‘review’ category to appear as:\u003C\u002Fp>\n\u003Cp>\u002Freviews\u002Fmy-review\u003C\u002Fp>\n\u003Cp>Using Advanced Permalinks this is not a problem.\u003C\u002Fp>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cp>Full documentation can be found on the \u003Ca href=\"http:\u002F\u002Furbangiraffe.com\u002Fplugins\u002Fadvanced-permalinks\u002F\" rel=\"nofollow ugc\">Advanced Permalinks Page\u003C\u002Fa> page.\u003C\u002Fp>\n","Allows multiple permalink structures and category-specific permalinks without needing redirects.",400,93420,54,9,"2012-05-05T09:05:00.000Z","2.9.2","2.0",[21,55,22,56,57],"permalinks","seo","url","http:\u002F\u002Furbangiraffe.com\u002Fplugins\u002Fadvanced-permalinks\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvanced-permalinks.zip",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":68,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":17,"tags":75,"homepage":80,"download_link":81,"security_score":70,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"php-to-pages","Legacy URL Suffix & SEO Preserver","2.2","Himanshu Parashar","https:\u002F\u002Fprofiles.wordpress.org\u002Funiquecodergmailcom\u002F","\u003Cp>\u003Cstrong>Don’t Let Your SEO Rank Vanish During a Migration.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Migrating a legacy website to WordPress is a massive win for your workflow, but it can be a disaster for your search engine rankings. If your old site used .php extensions (e.g., \u003Ccode>domain.com\u002Fabout-us.php\u003C\u002Fcode>), moving to standard WordPress “Clean Permalinks” will turn every one of those established links into a 404 Page Not Found error.\u003C\u002Fp>\n\u003Cp>PHP to Pages is the lightweight, “set it and forget it” solution that bridges the gap between your legacy architecture and modern WordPress flexibility.\u003C\u002Fp>\n\u003Ch3>The Value Proposition\u003C\u002Fh3>\n\u003Cblockquote>\n\u003Cp>“Seamlessly transition from legacy PHP sites to WordPress while maintaining 100% URL consistency. No complex .htaccess coding, no broken backlinks, and zero SEO drop-off.”\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Why Choose PHP to Pages?\u003C\u002Fh3>\n\u003Cp>When you change your URL structure, you lose the “link juice” accumulated over years. This plugin ensures that your existing backlinks from social media, external blogs, and Google search results remain active and functional.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Instantly Append .php Suffix:\u003C\u002Fstrong> Automatically transforms \u003Ccode>yoursite.com\u002Fsample-page\u002F\u003C\u002Fcode> into \u003Ccode>yoursite.com\u002Fsample-page.php\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Preservation:\u003C\u002Fstrong> Keep your indexed URLs exactly as they appear in Google Search Console to avoid the dreaded “re-indexing” phase.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zero-Configuration Setup:\u003C\u002Fstrong> No need to dive into your server’s .htaccess or Nginx config files. Just activate and your permalinks update instantly.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer Friendly:\u003C\u002Fstrong> Built with standard WordPress Rewrites API, ensuring compatibility with most well-coded themes and plugins.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lightweight Performance:\u003C\u002Fstrong> No bloat, no database-heavy queries. It simply tells WordPress how to read and display your URLs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Who Is This For?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Agencies & Freelancers:\u003C\u002Fstrong> Moving a long-term client from a static PHP site to WordPress.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Specialists:\u003C\u002Fstrong> Ensuring that a site migration doesn’t result in a loss of organic traffic.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Legacy Site Owners:\u003C\u002Fstrong> Anyone who has a decade’s worth of backlinks pointing to .php files and doesn’t want to manage thousands of manual 301 redirects.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\u003Cstrong>Install & Activate:\u003C\u002Fstrong> Simply upload the plugin to your WordPress dashboard.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Permalinks Refresh:\u003C\u002Fstrong> Go to \u003Cstrong>Settings > Permalinks\u003C\u002Fstrong> and click “Save Changes” to flush your rewrite rules.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Done:\u003C\u002Fstrong> Your pages will now resolve with the .php extension.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Example\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Before:\u003C\u002Fstrong> \u003Ccode>http:\u002F\u002Fsfdcbeginner.com\u002Fchild-parent-communication-without-event\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>After:\u003C\u002Fstrong> \u003Ccode>http:\u002F\u002Fsfdcbeginner.com\u002Fchild-parent-communication-without-event.php\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n","Maintain SEO rankings with custom URL suffixes like .php or .html. Perfect for legacy site migrations, fixing 404s, and preserving link juice.",200,11463,100,1,"2026-04-02T18:10:00.000Z","6.9.4","2.5.1",[76,77,55,78,79],"301-redirect","legacy-site","seo-migration","url-suffix","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fphp-to-pages\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fphp-to-pages.2.2.zip",{"slug":83,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":70,"downloaded":90,"rating":70,"num_ratings":50,"last_updated":91,"tested_up_to":92,"requires_at_least":93,"requires_php":17,"tags":94,"homepage":98,"download_link":99,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"permalinks-to-categorypermalinks","Permalinks to Category\u002FPermalinks","1.0.2","Svetoslav Marinov","https:\u002F\u002Fprofiles.wordpress.org\u002Flordspace\u002F","\u003Cp>If you have an existing website and you want to add category to your blog posts links (e.g. by using: \u002F%category%\u002F%postname%\u002F in Settings > Permalinks) then your visitors\u003Cbr \u002F>\nwill most likely run into page not found errors. This plugin checks for such post links and redirects the visitor using permanent (301) redirect to the correct \u002FCategory\u002FPermalink link IF the permalinks are setup.\u003C\u002Fp>\n\u003Cp>This plugin assumes that you have previously used \u002F%postname%\u002F in your Settings > Permalinks.\u003C\u002Fp>\n\u003Cp>Demo\u003Cbr \u002F>\nhttp:\u002F\u002Fwww.youtube.com\u002Fwatch?v=L124jV5joTk\u003C\u002Fp>\n\u003Cp>Bugs? Suggestions? If you want a faster reponse contact us through our website’s contact form [ orbisius.com ] and not through the support tab of this plugin or WordPress forums.\u003Cbr \u002F>\nWe don’t get notified when such requests get posted in the forums.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"http:\u002F\u002Forbisius.com\u002Fgo\u002Fintro2site?permalinks-to-categorypermalinks\" rel=\"nofollow ugc\">Free e-book: How to Build a Website Using WordPress: Beginners Guide\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Author\u003C\u002Fh4>\n\u003Cp>Svetoslav Marinov (Slavi) | \u003Ca href=\"http:\u002F\u002Forbisius.com\" title=\"Custom Web Programming, Web Design, e-commerce, e-store, WordPress Plugin Development, Facebook and Mobile App Development in Niagara Falls, St. Catharines, Ontario, Canada\" rel=\"nofollow ugc\">Custom Web and Mobile Programming by Orbisius.com\u003C\u002Fa>\u003C\u002Fp>\n","The plugin automatically redirects users who have accessed a blog post link without the category to the one which has the category and therefore avoid &hellip;",8190,"2014-12-03T15:19:00.000Z","4.0.38","2.6",[95,21,55,96,97],"404","redirection","search","http:\u002F\u002Forbisius.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpermalinks-to-categorypermalinks.1.0.2.zip",{"slug":101,"name":102,"version":103,"author":104,"author_profile":105,"description":106,"short_description":107,"active_installs":108,"downloaded":109,"rating":70,"num_ratings":71,"last_updated":110,"tested_up_to":111,"requires_at_least":112,"requires_php":17,"tags":113,"homepage":118,"download_link":119,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"wcs-custom-permalinks-hotfix","WCS Custom Permalinks Hotfix","1.1","Luke America","https:\u002F\u002Fprofiles.wordpress.org\u002Flukeamerica2020\u002F","\u003Cp>This plugin is a hotfix for permalink issues encountered with WordPress installations after upgrading to 3.1.x. \u003Cstrong>It fixes\u003C\u002Fstrong> the 404 error (or blank page) for menu\u002Fdropdown categories and tags. \u003Cstrong>It fixes\u003C\u002Fstrong> pagination for search results, categories, and tags. And, \u003Cstrong>it fixes\u003C\u002Fstrong> RSS feeds for categories and tags.\u003C\u002Fp>\n\u003Cp>Before using it, be sure that your issues are not caused by plugins that modify category links, tag links, and\u002For canonical redirection … by deactivating them. More details are available under \u003Cem>Installation\u003C\u002Fem> (above) and at Dashboard->WCS-Permalinks (after activation).\u003C\u002Fp>\n\u003Ch3>Additional Information\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\n\u003Cp>View \u003Ca href=\"http:\u002F\u002Fwpcodesnippets.info\u002Fblog\u002Fwcs-custom-permalinks-hotfix.html\" title=\"Plug-in Landing Page\" rel=\"nofollow ugc\">details for this plug-in\u003C\u002Fa> at our web site.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>View the full \u003Ca href=\"http:\u002F\u002Fwpcodesnippets.info\u002Fblog\u002Fhow-to-fix-the-wp-3-1-custom-permalinks-bug.html\" title=\"Source Code Details\" rel=\"nofollow ugc\">source code\u003C\u002Fa> explanation for the prototype of this plug-in along with user comments.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Visit our web site, \u003Ca href=\"http:\u002F\u002Fwpcodesnippets.INFO\" title=\"WP Code Snippets\" rel=\"nofollow ugc\">wpCodeSnippets.INFO\u003C\u002Fa>, for lots of WordPress tips, tweaks, shortcodes, and plugins.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>This plug-in is released under the GNU General Public License (GPL2). No external services are required and there are no additional features to purchase.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Donations\u003C\u002Fh3>\n\u003Cp>Did you find this plug-in useful? A small \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fcgi-bin\u002Fwebscr?cmd=_donations&currency_code=USD&business=LukeAmerica2020%40gmail.com&item_name=WP%20Code%20Snippets%20donation&amount=0.00&image_url=http:\u002F\u002Fwpcodesnippets.info\u002Ffiles\u002Fpaypal_header.png\" title=\"Support Future Development\" rel=\"nofollow ugc\">donation\u003C\u002Fa> will support our continued WordPress development efforts. Enter any amount.\u003C\u002Fp>\n","After upgrading to WordPress 3.1.x, many installations suffer broken permalinks for categories and tags. This hotfix repairs the problem.",60,9684,"2011-05-08T07:47:00.000Z","3.1.4","3.0.0",[114,115,55,116,117],"canonical-redirect","categories","permalinks-bug","permalinks-not-working","http:\u002F\u002Fwpcodesnippets.info\u002Fblog\u002Fwcs-custom-permalinks-hotfix.html","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwcs-custom-permalinks-hotfix.1.1.zip",{"slug":121,"name":122,"version":123,"author":124,"author_profile":125,"description":126,"short_description":127,"active_installs":128,"downloaded":129,"rating":70,"num_ratings":71,"last_updated":130,"tested_up_to":131,"requires_at_least":132,"requires_php":17,"tags":133,"homepage":134,"download_link":135,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"redirect-old-links","Redirect Old Links","1.0.0","ryanshoover","https:\u002F\u002Fprofiles.wordpress.org\u002Fryanshoover\u002F","\u003Cp>Changing your link structure in WordPress can lead to all of your old links breaking and returning a “404”. But no more! If someone goes to an old link for your site, I’ll find the new link and redirect them there automatically.\u003C\u002Fp>\n\u003Cp>No configuration. No one-by-one setting of the new link structures. No wrestling with complicated regex patterns. Just install me and relax.\u003C\u002Fp>\n\u003Cp>\u003Cem>Redirect 404s\u003C\u002Fem> works with posts, pages, and custom post types (like ecommerce products).\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Note – the plugin only works for permalink structures where the last “chunk” of the URL is the post name (also called the slug).\u003C\u002Fli>\n\u003C\u002Ful>\n","Did you change your permalink structure and now have old links \"404ing\"? I'll redirect those old links to their new one for you.",10,1625,"2017-03-20T20:20:00.000Z","4.7.33","3.0",[95,55,22,56],"https:\u002F\u002Fgithub.com\u002Fryanshoover\u002Fredirect-old-links","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fredirect-old-links.1.0.0.zip",{"attackSurface":137,"codeSignals":143,"taintFlows":205,"riskAssessment":251,"analyzedAt":264},{"hooks":138,"ajaxHandlers":139,"restRoutes":140,"shortcodes":141,"cronEvents":142,"entryPointCount":13,"unprotectedCount":13},[],[],[],[],[],{"dangerousFunctions":144,"sqlUsage":145,"outputEscaping":147,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":204},[],{"prepared":13,"raw":13,"locations":146},[],{"escaped":13,"rawEcho":148,"locations":149},35,[150,153,155,157,158,159,160,162,163,164,165,167,169,170,171,172,174,176,179,181,183,184,185,186,187,189,191,192,193,194,196,197,199,201,202],{"file":151,"line":148,"context":152},"admin\u002Fadd.inc.php","raw output",{"file":151,"line":154,"context":152},37,{"file":151,"line":156,"context":152},41,{"file":151,"line":156,"context":152},{"file":151,"line":34,"context":152},{"file":151,"line":34,"context":152},{"file":161,"line":148,"context":152},"admin\u002Fedit.inc.php",{"file":161,"line":154,"context":152},{"file":161,"line":156,"context":152},{"file":161,"line":156,"context":152},{"file":161,"line":166,"context":152},48,{"file":161,"line":168,"context":152},76,{"file":161,"line":168,"context":152},{"file":161,"line":168,"context":152},{"file":161,"line":168,"context":152},{"file":161,"line":173,"context":152},84,{"file":161,"line":175,"context":152},92,{"file":177,"line":178,"context":152},"admin\u002Flist.inc.php",8,{"file":177,"line":180,"context":152},21,{"file":177,"line":182,"context":152},22,{"file":177,"line":182,"context":152},{"file":177,"line":182,"context":152},{"file":177,"line":182,"context":152},{"file":177,"line":182,"context":152},{"file":177,"line":188,"context":152},23,{"file":177,"line":190,"context":152},24,{"file":177,"line":190,"context":152},{"file":177,"line":190,"context":152},{"file":177,"line":190,"context":152},{"file":177,"line":195,"context":152},25,{"file":177,"line":195,"context":152},{"file":198,"line":128,"context":152},"admin\u002Foptions.inc.php",{"file":198,"line":200,"context":152},20,{"file":198,"line":11,"context":152},{"file":198,"line":203,"context":152},40,[],[206,229,240],{"entryPoint":207,"graph":208,"unsanitizedCount":13,"severity":228},"\u003Cadd.inc> (admin\u002Fadd.inc.php:0)",{"nodes":209,"edges":224},[210,214,219,222],{"id":211,"type":212,"label":213,"file":151,"line":156},"n0","source","$_SERVER['PHP_SELF']",{"id":215,"type":216,"label":217,"file":151,"line":156,"wp_function":218},"n1","sink","echo() [XSS]","echo",{"id":220,"type":212,"label":221,"file":151,"line":156},"n2","$_SERVER['QUERY_STRING']",{"id":223,"type":216,"label":217,"file":151,"line":156,"wp_function":218},"n3",[225,227],{"from":211,"to":215,"sanitized":226},true,{"from":220,"to":223,"sanitized":226},"low",{"entryPoint":230,"graph":231,"unsanitizedCount":13,"severity":228},"\u003Cedit.inc> (admin\u002Fedit.inc.php:0)",{"nodes":232,"edges":237},[233,234,235,236],{"id":211,"type":212,"label":213,"file":161,"line":156},{"id":215,"type":216,"label":217,"file":161,"line":156,"wp_function":218},{"id":220,"type":212,"label":221,"file":161,"line":156},{"id":223,"type":216,"label":217,"file":161,"line":156,"wp_function":218},[238,239],{"from":211,"to":215,"sanitized":226},{"from":220,"to":223,"sanitized":226},{"entryPoint":241,"graph":242,"unsanitizedCount":250,"severity":228},"\u003Clist.inc> (admin\u002Flist.inc.php:0)",{"nodes":243,"edges":247},[244,246],{"id":211,"type":212,"label":245,"file":177,"line":182},"$_SERVER['PHP_SELF'] (x2)",{"id":215,"type":216,"label":217,"file":177,"line":182,"wp_function":218},[248],{"from":211,"to":215,"sanitized":249},false,2,{"summary":252,"deductions":253},"The \"link-shortcut\" v1.4 plugin exhibits a generally good security posture based on the provided static analysis. The complete absence of known CVEs and the plugin's minimal attack surface (zero AJAX handlers, REST API routes, shortcodes, or cron events) are strong indicators of responsible development and minimal exposure.  The 100% utilization of prepared statements for SQL queries further reinforces this, as it significantly mitigates SQL injection risks.  However, a critical concern arises from the output escaping.  With 35 total outputs and 0% properly escaped, there is a substantial risk of Cross-Site Scripting (XSS) vulnerabilities.  Any data displayed by the plugin that originates from user input or external sources, without proper sanitization and escaping, could be manipulated by attackers to inject malicious scripts. The taint analysis, while limited, did identify one flow with an unsanitized path, which could be a precursor to other vulnerabilities if not addressed.  Given the lack of historical vulnerabilities, it's possible this is an oversight in the current version rather than a persistent issue.  The plugin's strengths lie in its limited attack surface and secure database interactions, but the lack of output escaping is a significant weakness that requires immediate attention.",[254,257,259,262],{"reason":255,"points":256},"0% output escaping",15,{"reason":258,"points":178},"Taint flow with unsanitized path",{"reason":260,"points":261},"No capability checks",5,{"reason":263,"points":261},"No nonce checks","2026-04-16T11:19:12.508Z",{"wat":266,"direct":274},{"assetPaths":267,"generatorPatterns":271,"scriptPaths":272,"versionParams":273},[268,269,270],"\u002Fwp-content\u002Fplugins\u002Flink-shortcut\u002Fadmin\u002Fcss\u002Flinkshortcut_admin.css","\u002Fwp-content\u002Fplugins\u002Flink-shortcut\u002Fadmin\u002Fjs\u002Flinkshortcut_admin.js","\u002Fwp-content\u002Fplugins\u002Flink-shortcut\u002Fadmin\u002Fjs\u002Flinkshortcut_editor_plugin.js",[],[269,270],[],{"cssClasses":275,"htmlComments":285,"htmlAttributes":286,"restEndpoints":293,"jsGlobals":294,"shortcodeOutput":296},[276,277,278,279,280,281,282,283,284],"linkshortcut_add","linkshortcut_list","ident_msg","ident_custom_input_status_msg","linksubmitdiv","submitbox","shortcuturldiv","addressdiv","namediv",[],[287,288,289,290,291,292],"id=\"ident_random\"","id=\"ident_custom\"","id=\"ident_custom_input\"","id=\"ident_custom_input_status\"","id=\"linkshortcut_url\"","id=\"linkshortcut_name\"",[],[295],"window.linkshortcut_admin_ajaxurl",[],{"error":226,"url":298,"statusCode":299,"statusMessage":300,"message":300},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Flink-shortcut\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":261,"versions":302},[303,308,315,322,328],{"version":6,"download_url":25,"svn_tag_url":304,"released_at":27,"has_diff":249,"diff_files_changed":305,"diff_lines":27,"trac_diff_url":306,"vulnerabilities":307,"is_current":226},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Flink-shortcut\u002Ftags\u002F1.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Flink-shortcut%2Ftags%2F1.3.1&new_path=%2Flink-shortcut%2Ftags%2F1.4",[],{"version":309,"download_url":310,"svn_tag_url":311,"released_at":27,"has_diff":249,"diff_files_changed":312,"diff_lines":27,"trac_diff_url":313,"vulnerabilities":314,"is_current":249},"1.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortcut.1.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Flink-shortcut\u002Ftags\u002F1.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Flink-shortcut%2Ftags%2F1.3&new_path=%2Flink-shortcut%2Ftags%2F1.3.1",[],{"version":316,"download_url":317,"svn_tag_url":318,"released_at":27,"has_diff":249,"diff_files_changed":319,"diff_lines":27,"trac_diff_url":320,"vulnerabilities":321,"is_current":249},"1.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortcut.1.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Flink-shortcut\u002Ftags\u002F1.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Flink-shortcut%2Ftags%2F1.1&new_path=%2Flink-shortcut%2Ftags%2F1.3",[],{"version":103,"download_url":323,"svn_tag_url":324,"released_at":27,"has_diff":249,"diff_files_changed":325,"diff_lines":27,"trac_diff_url":326,"vulnerabilities":327,"is_current":249},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortcut.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Flink-shortcut\u002Ftags\u002F1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Flink-shortcut%2Ftags%2F1.0&new_path=%2Flink-shortcut%2Ftags%2F1.1",[],{"version":329,"download_url":330,"svn_tag_url":331,"released_at":27,"has_diff":249,"diff_files_changed":332,"diff_lines":27,"trac_diff_url":27,"vulnerabilities":333,"is_current":249},"1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortcut.1.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Flink-shortcut\u002Ftags\u002F1.0\u002F",[],[]]