[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fnCHDN4H8S0Xo6TR4J5RapmksT8E7s__VPk2LqV-7g8I":3,"$fM73gTp9dGnVikNp9cIF-W27hWfvnHe5bTLiLV71Sjv4":205,"$fsy4fFQromBJilBTf8xJi3SsPnPLDtJXCY7u_ojowphI":210},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"discovery_status":31,"vulnerabilities":32,"developer":33,"crawl_stats":29,"alternatives":39,"analysis":141,"fingerprints":179},"navigable","Navigable","0.39","ainth","https:\u002F\u002Fprofiles.wordpress.org\u002Fainth\u002F","\u003Cp>Overview\u003C\u002Fp>\n\u003Cp>Navigable is a WordPress plugin for template developers. It gives you an alternative to WordPress’s wp_nav_menu() function. Advantages:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Navigable gives you a data structure to work with. You have 100% markup control, and it’s all in the templates.\u003C\u002Fli>\n\u003Cli>You can determine if a nav element occurs before\u002Fafter an active element.\u003C\u002Fli>\n\u003Cli>Flexibility. Need the current sub-navigation separate from the main nav list? Need whichever navigation tier the current page is on all by itself? Need the sub nav tree of a specific element?\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requires:\u003C\u002Fh4>\n\u003Cp>PHP5\u003Cbr \u002F>\nOnly tested on WordPress 3.1, will likely work on much earlier versions since it only uses a few WordPress Functions\u003C\u002Fp>\n\u003Cp>Usage\u003C\u002Fp>\n\u003Cp>You need to instantiate a navigation object first:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php $nav = new NavigableWP('Title of Navigation', $args); ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The paramaters are any arguments accepted by wp_get_nav_menu_items().\u003C\u002Fp>\n\u003Cp>Alternatively, if you want to skip a custom navigation menu and just have all pages thrown into a nav stew you can use a different class:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php $nav = new NavigableWPPages(); ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Now you can iterate:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cul>\n    \u003C?php foreach ($nav->tree as $elem): ?>\n        \u003Cli>\u003C?php echo $elem->title; ?>\u003C\u002Fli>\n    \u003C?php endforeach; ?>\n\u003C\u002Ful>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If an element has a subnav:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cul class=\"main-nav\">\n    \u003C?php foreach ($nav->tree as $elem): ?>\n        \u003Cli>\n            \u003C?php echo $elem->title; ?>\n            \u003C?php if ($elem->sub_nav): ?>\n                \u003Cul class=\"sub-nav\">\n                \u003C?php foreach ($elem->sub_nav as $sub_elem): ?>\n                    \u003Cli>\u003C?php echo $sub_elem->title; ?>\u003C\u002Fli>\n                \u003C?php endforeach; ?>\n                \u003C\u002Ful>\n            \u003C?php endif; ?>\n        \u003C\u002Fli>\n    \u003C?php endforeach; ?>\n\u003C\u002Ful>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If you want the current sub nav tree (useful if you need this outside the main nav loop):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php if ($sub_nav = $nav->current_sub_nav()): ?>\n    \u003C?php foreach ($sub_nav as $elem): ?>\n        ...\n    \u003C?php endforeach; ?>\n\u003C?php endif; ?> \n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You might want whichever tier of navigation the current page is on:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php if ($current_tier = $nav->active_tier()): ?>\n    \u003C?php foreach ($current_tier as $elem): ?>\n        ...\n    \u003C?php endforeach; ?>\n\u003C?php endif; ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You might want the sub-navigation of a particular element:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php if ($some_nav = $nav->find_branch(74)): \u002F\u002Fget the subnav of element 74 ?>\n    \u003C?php foreach ($some_nav as $elem): ?>\n        ...\n    \u003C?php endforeach; ?>\n\u003C?php endif; ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>or\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php \u002F\u002F\u002F\u002Fget the sub_nav of the first element whose title is 'About Us'. Hopefully there's just one.  ?>\n\u003C?php if ($some_nav = $nav->find_branch('About Us', 'title')): ?>\n    \u003C?php foreach ($some_nav as $elem): ?>\n        ...\n    \u003C?php endforeach; ?>\n\u003C?php endif; ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You’ll probably want to mark which things are active based on which page the user is on. And if you’re very fancy you’ll want to mark the elements before and after that element:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>...\n    \u003Cli class=\"nav-item\u003C?php $elem->if_active(' active'); ?>\">\n        \u003C?php echo $elem->title; ?>\n    \u003C\u002Fli>\n...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>No need to use echo – whatever string you pass to any of these functions will be echo as if by magic.\u003C\u002Fp>\n\u003Cp>There’s a bunch more that operate in much the same way:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n    $elem->if_current($markup); \u002F\u002F echo markup if this element is the current post\n    $elem->if_active($markup);  \u002F\u002F echo markup if element is active (both the direct parent and the current element are 'active')\n    $elem->if_active_parent($markup); \u002F\u002F echo markup if element is a parent of the current element\n    $elem->if_before_active($markup);   \u002F\u002F echo markup if element is before an active element (both parents and current)\n    $elem->if_after_active($markup);    \u002F\u002F echo markup if element is after an active element (both parents and current)\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Here are the variables navigation elements have:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n    $elem->id;              \u002F\u002F In NavigableWP class, id of the nav menu item. In NavigableWPPages id of actual page\n    $elem->object_id;   \u002F\u002F In NavigableWP class, id of the page. In the NavigableWPPages class, same as id\n    $elem->order;           \u002F\u002F Not too useful. The menu order of the item\n    $elem->url;             \u002F\u002F Full url of the page\u002Fpost.\n    $elem->title;           \u002F\u002F Name of the element.\n    $elem->parent_id; \u002F\u002F ID of the parent of the element. Root elements have a parent id of 0.\n    $elem->slug;            \u002F\u002F The slug\u002Furl title\u002Fpost_title of the element's page.\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Things to know\u003C\u002Fp>\n\u003Cp>What page are you on? There’s two different things Navigable does to try to figure it out. The first is the obvious route, we just ask WordPress:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$current_post = get_queried_object()->ID;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This will work for pretty much everyone but didn’t quite work for me. If you use podscms or any other plugin that means that the page you’re on isn’t a WordPress post that strategy won’t work. So if that doesn’t work Navigable will assume you are using clean urls that correspond nicely to your navigation tree, and will mark as active the last most specific thing it can find in the nav tree. For example, suppose the request uri is: \u003Cem>yoursite.com\u002Fabout\u002Fstuff\u002Fandthings\u002Fmy-pods-slug\u003C\u002Fem>. The \u003Cem>my-pods-slug\u003C\u002Fem> is actually a podscms slug, so WordPress is confused. Navigable will iterate through the nav tree, looking for \u003Cem>about\u003C\u002Fem>. If it finds it, it will look into \u003Cem>about\u003C\u002Fem>‘s subnav if it has one and look for \u003Cem>stuff\u003C\u002Fem>, then again it will look for \u003Cem>andthings\u003C\u002Fem>. It will try to find \u003Cem>my-pods-slug\u003C\u002Fem> but can’t so it will assume \u003Cem>andthings\u003C\u002Fem> is the current post.\u003C\u002Fp>\n\u003Cp>Motivation\u003C\u002Fp>\n\u003Cp>Navigation in WordPress is handled like so:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php wp_nav_menu($args); ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Passing an array of arguments lets you control a lot of the markup that’s generated:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php $defaults = array(\n  'theme_location'  => ,\n  'menu'            => , \n  'container'       => 'div', \n  'container_class' => 'menu-{menu slug}-container', \n  'container_id'    => , \n  'menu_class'      => 'menu', \n  'menu_id'         => ,\n  'echo'            => true,\n  'fallback_cb'     => 'wp_page_menu',\n  'before'          => ,\n  'after'           => ,\n  'link_before'     => ,\n  'link_after'      => ,\n  'depth'           => 0,\n  'walker'          => );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>I found this a bit unsatisfactory – I’d much rather have some kind of\u003Cbr \u002F>\ndata structure to work with that would let me iterate over nav elements\u003Cbr \u002F>\nso I have complete control over the markup. I also needed to assign a\u003Cbr \u002F>\nclass to the nav element that comes before the active element and saw no\u003Cbr \u002F>\nway to do that with the standard WordPress function. Finally, I needed\u003Cbr \u002F>\nthe sub navigation on its own, apart from the main nav listing, and saw\u003Cbr \u002F>\nno way to do it.\u003C\u002Fp>\n\u003Cp>The problem (thought it’s not a problem for most I bet) with the approach I’m taking with this plugin is of course that if you have a whole lot of sub navigation tiers your code is going to get quite messy. But then most designs aren’t going to support too many navigation tiers either, and if they did they’d likely need different classes and such to be able to support the design so this still works.\u003C\u002Fp>\n","Navigable is a WordPress plugin for template developers. It gives you an alternative to WordPress's wp_nav_menu() function.",30,5006,100,1,"2012-01-08T00:20:00.000Z","3.3.2","3.0","",[20,21,22,23,24],"menu-templating","menus","navigation","sub-nav","subnav","http:\u002F\u002Fgithub.com\u002Fintelligible\u002FNavigable","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavigable.0.39.zip",85,0,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":36,"avg_patch_time_days":11,"trust_score":37,"computed_at":38},2,70,93,89,"2026-05-20T09:02:01.700Z",[40,60,82,103,123],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":48,"downloaded":49,"rating":13,"num_ratings":50,"last_updated":51,"tested_up_to":52,"requires_at_least":53,"requires_php":18,"tags":54,"homepage":58,"download_link":59,"security_score":13,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"getdave-responsive-navigation-block","Responsive Navigation Block","1.0.10","David Smith","https:\u002F\u002Fprofiles.wordpress.org\u002Fget_dave\u002F","\u003Cp>This Plugin allows you to display and apply alternative styling to different navigation menus based on the screen size using the WordPress Navigation block.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgetdave-responsive-navigation-block\u002F\" rel=\"ugc\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fplayground.wordpress.net\u002F?blueprint-url=https:\u002F\u002Fraw.githubusercontent.com\u002Fgetdave\u002Fresponsive-navigation-block\u002Frefs\u002Fheads\u002Ftrunk\u002F.wordpress-org\u002Fblueprints\u002Fblueprint.json\" rel=\"nofollow ugc\">\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3> Video Walkthrough\u003C\u002Fh3>\n\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\u002FR5kzAaEsDMg?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>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Two new Navigation Block (variations) for:\n\u003Cul>\n\u003Cli>Mobile\u003C\u002Fli>\n\u003Cli>Desktop\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Style your menu differently depending on screen size.\u003C\u002Fli>\n\u003Cli>Use a different menu for each screen size.\u003C\u002Fli>\n\u003Cli>Customize the “breakpoint” (where you switch between mobile and desktop).\u003C\u002Fli>\n\u003Cli>Automatically switch editor to “mobile” preview when editing the mobile navigation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>This Plugin creates two block variations from the Navigation block which will be \u003Cstrong>automatically hidden\u002Fshown at the configured screensize\u003C\u002Fstrong> (breakpoint):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Navigation (Mobile) – will be displayed only on smaller screen sizes.\u003C\u002Fli>\n\u003Cli>Navigation (Desktop) – will be displayed only on larger screen sizes.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This affords the ability to \u003Cstrong>independently style mobile vs desktop navigation\u003C\u002Fstrong> and even allows for \u003Cstrong>completely different menus\u003C\u002Fstrong> to be used.\u003C\u002Fp>\n\u003Cp>The Plugin should be used as follows:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Install and Activate the plugin – two new block variations will be automatically registered for “Mobile” and “Desktop”.\u003C\u002Fli>\n\u003Cli>Go to the Editor and remove any existing Navigation block.\u003C\u002Fli>\n\u003Cli>Add the “Desktop Navigation” block – style and configure the menu for “desktop” as required.\u003C\u002Fli>\n\u003Cli>Add the “Mobile Navigation” block – style and configure the menu for “mobile” as required.\u003C\u002Fli>\n\u003Cli>View the front of your website and resize your browser to see the navigations swap out at the appropriate breakpoint\u002Fscreensize.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Alternatively you can transform the default Navigation block to either \u003Ccode>Mobile\u003C\u002Fcode> or \u003Ccode>Desktop\u003C\u002Fcode> variations via the block’s interface.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Please see FAQs. If you still have an issue please:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>check \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetdave\u002Fresponsive-navigation-block\u002Fissues\" rel=\"nofollow ugc\">Github for existing Issue reports\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>(if none) then file a new Issue on Github\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy Statement\u003C\u002Fh3>\n\u003Cp>Responsive Navigation does \u003Cem>not\u003C\u002Fem>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>use cookies.\u003C\u002Fli>\n\u003Cli>send data to any third party.\u003C\u002Fli>\n\u003Cli>include any third party resources.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Contributing\u003C\u002Fh3>\n\u003Cp>Contributions to this Plugin are welcome. Please fork the Github repository and submit a PR for review.\u003C\u002Fp>\n\u003Ch3>Development Setup\u003C\u002Fh3>\n\u003Cp>This Plugin uses the \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fblock-editor\u002Freference-guides\u002Fpackages\u002Fpackages-scripts\u002F\" rel=\"nofollow ugc\">@wordpress\u002Fscripts package\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Check out the Github repo into the \u003Ccode>wp-content\u002Fplugins\u003C\u002Fcode> directory of a WordPress installation.\u003C\u002Fli>\n\u003Cli>\u003Ccode>cd\u003C\u002Fcode> into the Plugin’s directory install the dependencies with \u003Ccode>npm i\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Running \u003Ccode>npm start\u003C\u002Fcode> will start the \u003Ccode>@wordpress\u002Fscripts\u003C\u002Fcode> package in watch mode ready to compile the JavaScript on modification.\u003C\u002Fli>\n\u003Cli>PHP files can be edited in the usual manner.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Testing\u003C\u002Fh3>\n\u003Cp>The Plugin has e2e test coverage for the key features courtesey of @wordpress\u002Fscripts and Playwright.\u003C\u002Fp>\n\u003Cp>To run the tests – in your terminal of choice:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>npm run build\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>npm run wp-env start\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Run the tests: \u003Ccode>npm run test:e2e\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Releasing\u003C\u002Fh3>\n\u003Cp>Releasing the Plugin to the WordPress.org Plugin repo is the prerogative of the Plugin owner (@get_dave). The process is as follows:\u003C\u002Fp>\n\u003Ch4>Test the Plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Commit all changes to \u003Ccode>trunk\u003C\u002Fcode> branch.\u003C\u002Fli>\n\u003Cli>Push changes to \u003Ccode>trunk\u003C\u002Fcode> (only) – \u003Ccode>git push origin trunk\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>In Github:\n\u003Cul>\n\u003Cli>Actions\u003C\u002Fli>\n\u003Cli>Select the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetdave\u002Fresponsive-navigation-block\u002Factions\u002Fworkflows\u002Fbuild-release-zip.yml\" rel=\"nofollow ugc\">\u003Ccode>Build Release Zip\u003C\u002Fcode> action\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Select the \u003Ccode>Run workflow\u003C\u002Fcode> dropdown and run the workflow to generate a zip file.\u003C\u002Fli>\n\u003Cli>When action completes download the generated Plugin zip artifact.\u003C\u002Fli>\n\u003Cli>Manually install and test the .zip.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Deploy to WP.org\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>When ready to deploy.\u003C\u002Fli>\n\u003Cli>Bump Plugin version and tag release – \u003Ccode>npm run bump-version\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Push trunk and tags – \u003Ccode>git push origin trunk --tags\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Deployment to WP.org will be handled automatically.\u003C\u002Fli>\n\u003C\u002Ful>\n","Complete control over your navigation menus based on screen size including styles and menu items.",1000,10051,5,"2025-09-27T17:02:00.000Z","6.8.5","6.5",[55,21,56,22,57],"blocks","mobile","responsive","https:\u002F\u002Fgithub.com\u002Fgetdave\u002Fresponsive-navigation-block","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgetdave-responsive-navigation-block.1.0.10.zip",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":48,"downloaded":68,"rating":69,"num_ratings":70,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":74,"tags":75,"homepage":79,"download_link":80,"security_score":81,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"import-export-menu","Import Export Menu","2.0.3","yukyhendiawan","https:\u002F\u002Fprofiles.wordpress.org\u002Fyukyhendiawan\u002F","\u003Cp>The Import Export Menu plugin provides an easy and efficient way to manage your WordPress menus. With this plugin, you can seamlessly import and export your website menus, making it simple to transfer menu structures between different WordPress installations or to back up your menu configurations.\u003C\u002Fp>\n\u003Ch3>Key Features:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Simple Export: Quickly export your menu structures with a single click.\u003C\u002Fli>\n\u003Cli>Easy Import: Effortlessly import your menus back into your WordPress site.\u003C\u002Fli>\n\u003Cli>User-Friendly Interface: Straightforward and intuitive interface for effortless menu management.\u003C\u002Fli>\n\u003Cli>Compatibility: Works with all WordPress themes that support the WordPress menu system.\u003C\u002Fli>\n\u003C\u002Ful>\n","This plugin allows you to export and import menus in WordPress, making it easier to manage and migrate menu structures between sites.",14784,82,7,"2025-04-19T19:01:00.000Z","6.7.5","6.0","7.4",[76,77,78,21,22],"export","import","menu","https:\u002F\u002Fyukyhendiawan.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fimport-export-menu.2.0.3.zip",92,{"slug":83,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":48,"downloaded":90,"rating":13,"num_ratings":91,"last_updated":92,"tested_up_to":52,"requires_at_least":93,"requires_php":94,"tags":95,"homepage":101,"download_link":102,"security_score":13,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"menu-by-user-roles","Menu By User Roles","2.0.4","kahnu044","https:\u002F\u002Fprofiles.wordpress.org\u002Fkahnu044\u002F","\u003Cp>Menu By User Roles is a WordPress plugin that allows you to control the visibility of menu items based on user roles. You can assign specific user roles to each menu item, ensuring that only users with those roles can see and access the corresponding links.\u003C\u002Fp>\n\u003Cp>For more information and usage instructions, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkahnu044\u002Fmenu-by-user-roles\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support and inquiries, please \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkahnu044\u002Fmenu-by-user-roles\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is released under the GPL-2.0+ License. See \u003Ccode>LICENSE\u003C\u002Fcode> for more information.\u003C\u002Fp>\n\u003Ch3>Author\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkahnu044\" rel=\"nofollow ugc\">Kahnu Charan Swain\u003C\u002Fa>\u003C\u002Fp>\n","Menu By User Roles allows you to control the visibility of menu items based on user roles.",8663,3,"2025-10-02T15:41:00.000Z","5.0","7.0",[96,97,98,99,100],"access-control","role-based-menus","site-navigation","tags-menu-visibility","user-roles","https:\u002F\u002Fgithub.com\u002Fkahnu044\u002Fmenu-by-user-roles","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmenu-by-user-roles.2.0.4.zip",{"slug":104,"name":105,"version":106,"author":107,"author_profile":108,"description":109,"short_description":110,"active_installs":111,"downloaded":112,"rating":113,"num_ratings":114,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":18,"tags":118,"homepage":121,"download_link":122,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"auto-subpage-menu","Auto Subpage Menu","1.1.5","jojoee","https:\u002F\u002Fprofiles.wordpress.org\u002Fjojoee\u002F","\u003Cp>By default wordpress menu system, wordpress can only automatically add\u002Fremove \u003Cstrong>top-level page\u003C\u002Fstrong> to\u002Ffrom menus\u003C\u002Fp>\n\u003Cul>\n\u003Cli>When \u003Cstrong>publish\u003C\u002Fstrong> top-level page then add it into menus\u003C\u002Fli>\n\u003Cli>When \u003Cstrong>move\u003C\u002Fstrong> top-level page to trash then remove it from menus\u003C\u002Fli>\n\u003Cli>When \u003Cstrong>restore\u003C\u002Fstrong> top-level page then add it into menus\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>this feature has no effect with \u003Cstrong>subpage\u003C\u002Fstrong> (child page), but \u003Cstrong>Auto Subpage Menu\u003C\u002Fstrong> can\u003C\u002Fp>\n\u003Cul>\n\u003Cli>When \u003Cstrong>publish\u003C\u002Fstrong> subpage (child page) then add it into menus (if its page parent exists in menu)\u003C\u002Fli>\n\u003Cli>When \u003Cstrong>update\u003C\u002Fstrong> subpage (child page) then update menus\u003C\u002Fli>\n\u003Cli>When \u003Cstrong>move\u003C\u002Fstrong> subpage (child page) to trash then remove it from menus\u003C\u002Fli>\n\u003Cli>When \u003Cstrong>restore\u003C\u002Fstrong> subpage (child page) then add it into menus\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Notes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FWordPress_Coding_Standards\" rel=\"nofollow ugc\">WordPress Coding Standards\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.phpdoc.org\u002F\" rel=\"nofollow ugc\">phpDocumentor\u003C\u002Fa> DocBlock Standard\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fauto-subpage-menu\u002F\" rel=\"ugc\">Auto Subpage Menu\u003C\u002Fa> – WordPress Directory Uri\u003C\u002Fli>\n\u003Cli>2 spaces for indent\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjojoee\u002Fauto-subpage-menu\" rel=\"nofollow ugc\">Repository on Github\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>TODO\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>[ ] Implement DocBlock to all\u003C\u002Fli>\n\u003Cli>[ ] Automatically update child-page when its parent have been move, suggested by \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fprofile\u002Fncwebdev\" rel=\"ugc\">ncwebdev\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fmenu-link-doesnt-work-properly-when-moving-a-page\" rel=\"ugc\">topic\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>[ ] Add other versions into wordpress download page\u003C\u002Fli>\n\u003C\u002Ful>\n","By default wordpress menu system, wordpress can only automatically add\u002Fremove top-level page to\u002Ffrom menus",800,10069,86,12,"2020-08-04T00:36:00.000Z","5.4.19","3.3.0",[119,120,78,21,22],"admin","child-page","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fauto-subpage-menu\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fauto-subpage-menu.zip",{"slug":124,"name":125,"version":126,"author":127,"author_profile":128,"description":129,"short_description":130,"active_installs":131,"downloaded":132,"rating":133,"num_ratings":50,"last_updated":134,"tested_up_to":135,"requires_at_least":136,"requires_php":18,"tags":137,"homepage":139,"download_link":140,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"better-menu-widget","Better Menu Widget","1.5.1","Tracey Holinka","https:\u002F\u002Fprofiles.wordpress.org\u002Ftraceyholinka\u002F","\u003Cp>\u003Cstrong>This plugin is no longer under active development.\u003C\u002Fstrong> With all the improvements to WordPress the need for this plugin has long passed. It will still work but no improvements will be made.\u003C\u002Fp>\n\u003Cp>A Custom Menu widget that adds a custom url to the widget title and adds a custom css class. The default custom menu CSS class is \u003Ccode>sub-menu\u003C\u002Fcode> and it is applied to the \u003Ccode>\u003Cul>\u003C\u002Fcode> tag. You will need to style the widget using your theme’s stylesheet.\u003C\u002Fp>\n\u003Cp>Based on the core WordPress Custom Menu widget.\u003C\u002Fp>\n\u003Ch4>Options\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Custom title URL\u003C\u002Fli>\n\u003Cli>Custom CSS class\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Plugin’s Official Site\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbetter-menu-widget\u002F\" rel=\"ugc\">Overview\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTraceyHolinka\u002Fbetter-menu-widget\u002Fblob\u002Fmaster\u002Fchangelog.md\" rel=\"nofollow ugc\">Changelog\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Better Menu Widget makes it easy to customize your menu widgets by adding css styles and a heading link.",600,25622,84,"2019-02-09T23:17:00.000Z","4.9.29","4.5",[21,22,138],"widget","http:\u002F\u002Ftraceyholinka.com\u002Fwordpress-plugins\u002Fbetter-menu-widget\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbetter-menu-widget.1.5.1.zip",{"attackSurface":142,"codeSignals":148,"taintFlows":167,"riskAssessment":168,"analyzedAt":178},{"hooks":143,"ajaxHandlers":144,"restRoutes":145,"shortcodes":146,"cronEvents":147,"entryPointCount":28,"unprotectedCount":28},[],[],[],[],[],{"dangerousFunctions":149,"sqlUsage":150,"outputEscaping":152,"fileOperations":28,"externalRequests":28,"nonceChecks":28,"capabilityChecks":28,"bundledLibraries":166},[],{"prepared":28,"raw":28,"locations":151},[],{"escaped":28,"rawEcho":50,"locations":153},[154,158,160,162,164],{"file":155,"line":156,"context":157},"class-nav-element.php",64,"raw output",{"file":155,"line":159,"context":157},78,{"file":155,"line":161,"context":157},91,{"file":155,"line":163,"context":157},105,{"file":155,"line":165,"context":157},118,[],[],{"summary":169,"deductions":170},"The 'navigable' plugin v0.39 exhibits a seemingly strong security posture based on the provided static analysis. There are no identified attack surface entry points, no dangerous function calls, and all SQL queries are properly prepared. Furthermore, the plugin has no recorded vulnerability history, suggesting a history of secure development or a lack of past scrutiny. This combination of factors points to a plugin that has likely adhered to good security practices, particularly in its handling of database interactions and its limited exposure.\n\nHowever, a significant concern arises from the complete lack of output escaping. With 5 total outputs analyzed and 0% properly escaped, this indicates a high potential for Cross-Site Scripting (XSS) vulnerabilities. Any data rendered to the user interface that originates from user input or external sources, if not properly escaped, could be exploited by attackers to inject malicious scripts. Additionally, the absence of any capability checks, nonce checks, and taint analysis flows (while potentially indicating no such issues were found) also means there are no explicit checks in place for these common security measures, which could leave the plugin vulnerable if features are added or modified without these safeguards.\n\nIn conclusion, while the plugin's current state shows strengths in areas like SQL handling and attack surface minimization, the critical lack of output escaping represents a significant and actionable risk. The absence of vulnerability history is positive, but it should not overshadow the immediate danger posed by unescaped output. Developers should prioritize addressing the output escaping issue to mitigate XSS risks.",[171,174,176],{"reason":172,"points":173},"0% output escaping",8,{"reason":175,"points":50},"0 capability checks",{"reason":177,"points":50},"0 nonce checks","2026-03-16T22:37:32.594Z",{"wat":180,"direct":189},{"assetPaths":181,"generatorPatterns":184,"scriptPaths":185,"versionParams":186},[182,183],"\u002Fwp-content\u002Fplugins\u002Fnavigable\u002Fnavigable.css","\u002Fwp-content\u002Fplugins\u002Fnavigable\u002Fnavigable.js",[],[183],[187,188],"navigable\u002Fnavigable.css?ver=","navigable\u002Fnavigable.js?ver=",{"cssClasses":190,"htmlComments":194,"htmlAttributes":195,"restEndpoints":199,"jsGlobals":200,"shortcodeOutput":203},[191,192,193],"navigable-nav","navigable-nav-active","navigable-nav-current",[],[196,197,198],"data-navigable-id","data-navigable-parent-id","data-navigable-order",[],[201,202],"window.Navigable","var Navigable",[204],"\u003Cnav class=\"navigable-nav navigable-nav-active navigable-nav-current\">",{"error":206,"url":207,"statusCode":208,"statusMessage":209,"message":209},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fnavigable\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":50,"versions":211},[212,218,225,232,239],{"version":6,"download_url":26,"svn_tag_url":213,"released_at":29,"has_diff":214,"diff_files_changed":215,"diff_lines":29,"trac_diff_url":216,"vulnerabilities":217,"is_current":206},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fnavigable\u002Ftags\u002F0.39\u002F",false,[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fnavigable%2Ftags%2F0.38&new_path=%2Fnavigable%2Ftags%2F0.39",[],{"version":219,"download_url":220,"svn_tag_url":221,"released_at":29,"has_diff":214,"diff_files_changed":222,"diff_lines":29,"trac_diff_url":223,"vulnerabilities":224,"is_current":214},"0.38","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavigable.0.38.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fnavigable\u002Ftags\u002F0.38\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fnavigable%2Ftags%2F0.37&new_path=%2Fnavigable%2Ftags%2F0.38",[],{"version":226,"download_url":227,"svn_tag_url":228,"released_at":29,"has_diff":214,"diff_files_changed":229,"diff_lines":29,"trac_diff_url":230,"vulnerabilities":231,"is_current":214},"0.37","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavigable.0.37.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fnavigable\u002Ftags\u002F0.37\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fnavigable%2Ftags%2F0.36&new_path=%2Fnavigable%2Ftags%2F0.37",[],{"version":233,"download_url":234,"svn_tag_url":235,"released_at":29,"has_diff":214,"diff_files_changed":236,"diff_lines":29,"trac_diff_url":237,"vulnerabilities":238,"is_current":214},"0.36","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavigable.0.36.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fnavigable\u002Ftags\u002F0.36\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fnavigable%2Ftags%2F0.34&new_path=%2Fnavigable%2Ftags%2F0.36",[],{"version":240,"download_url":241,"svn_tag_url":242,"released_at":29,"has_diff":214,"diff_files_changed":243,"diff_lines":29,"trac_diff_url":29,"vulnerabilities":244,"is_current":214},"0.34","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavigable.0.34.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fnavigable\u002Ftags\u002F0.34\u002F",[],[]]