[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fbaMa29LQFR_tzrPdHNqVgJYQlfPcJdae7gtRynCE2uA":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"sanchothefat","Robert O'Rourke","https:\u002F\u002Fprofiles.wordpress.org\u002Fsanchothefat\u002F",5,740,85,30,84,"2026-04-03T23:21:20.125Z",[14,39,59,79,97],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":22,"num_ratings":23,"last_updated":24,"tested_up_to":25,"requires_at_least":26,"requires_php":27,"tags":28,"homepage":34,"download_link":35,"security_score":9,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"wp-permastructure","WP Permastructure","1.4.4","\u003Cp>In addition to controlling your custom post type permalinks this plugin adds support for using custom taxonomies in your permalink structures as well.\u003C\u002Fp>\n\u003Cp>Not only that but you can control the full permalink so the post type slug is not required at the start of the link.\u003C\u002Fp>\n\u003Cp>Multiple post types can use the same permalink structure.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>There are 2 ways to use this plugin:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Permalink Settings\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The plugin adds fields to the permalinks settings page for any public facing custom post types.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>In Code\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>When registering a post type you can add a value to the rewrite property with the key ‘permastruct’ to define your default permalink structure.\u003C\u002Fp>\n\u003Cp>eg:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n\nregister_post_type( 'my_type', array(\n    ...\n    'rewrite' => array(\n        'permastruct' => '\u002F%custom_taxonomy_name%\u002F%author%\u002F%postname%\u002F'\n    ),\n    ...\n) );\n\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Adds the ability to configure permalinks for custom post types using rewrite tags like %post_id% and %author%.",400,21041,86,15,"2023-07-26T09:18:00.000Z","6.3.8","3.3","",[29,30,31,32,33],"custom-post-types","custom-taxonomies","permalinks","rewrite-rules","urls","https:\u002F\u002Fgithub.com\u002Finterconnectit\u002Fwp-permastructure","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-permastructure.1.4.4.zip",0,null,"2026-03-15T15:16:48.613Z",{"slug":40,"name":41,"version":42,"author":5,"author_profile":6,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":7,"last_updated":48,"tested_up_to":49,"requires_at_least":50,"requires_php":27,"tags":51,"homepage":57,"download_link":58,"security_score":9,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"dropdown-menus","Dropdown Menus","1.0","\u003Cp>Sometimes for mobile design or more generally small-screen design it can be beneficial to save space by using a dropdown for your navigation.\u003C\u002Fp>\n\u003Cp>This plugin provides a way to display your custom menus as dropdowns either using a widget or a function call and can be used as an include in any theme.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>If you are using the plugin with a theme you can use the function \u003Ccode>dropdown_menu()\u003C\u002Fcode> in place of calls to \u003Ccode>wp_nav_menu()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>The \u003Ccode>dropdown_menu()\u003C\u002Fcode> function takes the same arguments as \u003Ccode>wp_nav_menu()\u003C\u002Fcode> with the addition of three extras:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\ndropdown_menu( array(\n\n    \u002F\u002F You can alter the blanking text eg. \"- Menu Name -\" using the following\n    'dropdown_title' => '-- Main Menu --',\n\n    \u002F\u002F indent_string is a string that gets output before the title of a\n    \u002F\u002F sub-menu item. It is repeated twice for sub-sub-menu items and so on\n    'indent_string' => '- ',\n\n    \u002F\u002F indent_after is an optional string to output after the indent_string\n    \u002F\u002F if the item is a sub-menu item\n    'indent_after' => ''\n\n) );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can extend and alter the output of the dropdowns using the output filters available in the code.\u003C\u002Fp>\n\u003Cp>There are also plenty of styling hooks like in the standard list type menus with the addition of classes for targetting items at a certain depth in the menu (\u003Ccode>.menu-item-depth-1\u003C\u002Fcode> for example) aswell the usual \u003Ccode>.current-menu-item\u003C\u002Fcode> and \u003Ccode>.current-menu-ancestor\u003C\u002Fcode> classes.\u003C\u002Fp>\n\u003Ch4>Filters\u002FHooks\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>dropdown_blank_item_text\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_blank_item_text', 10, 2 );\nfunction my_dropdown_blank_text( $title, $args ) {\n    return __( '- Browse -' );\n}\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If you want to show the menu title as the blank item text use the follwing code:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_blank_item_text', 'dropdown_menu_use_menu_title', 10, 2 );\nfunction dropdown_menu_use_menu_title( $title, $args ) {\n    return '- ' . $args->menu->name . ' -';\n}\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>dropdown_menus_indent_string\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_menus_indent_string', 10, 4 );\nfunction my_dropdown_indent_string( $indent_string, $item, $depth, $args ) {\n    return str_repeat( '&nbsp;&nbsp;', $depth );\n}\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>dropdown_menus_indent_after\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_menus_indent_after', 10, 4 );\nfunction my_dropdown_indent_after( $indent_after, $item, $depth, $args ) {\n    return '-';\n}\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>dropdown_menus_class\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Use this if you find you get class name or CSS conflicts, for example with Twitter Bootstrap.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_menus_class', create_function( '$c', 'return \"my-dropdown-menu-class\";' ) );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>dropdown_menus_select_current\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Use this filter to stop the output of the \u003Ccode>selected=\"selected\"\u003C\u002Fcode> attribute. Useful if you prefer to show the blank option on every page.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'dropdown_menus_select_current', create_function( '$bool', 'return false;' ) );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Can I make sure this plugin is available to my theme?\u003C\u002Fh4>\n\u003Cp>If your theme requires this plugin to be available it will work as a simple include. Just place the plugin into your theme directory and include dropdown-menus.php from your functions.php file.\u003C\u002Fp>\n\u003Cp>If you place the plugin folder into your theme’s directory you would use the following code in your functions.php file:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nif ( ! function_exists( 'dropdown_menu' ) )\n    include( 'dropdown-menus\u002Fdropdown-menus.php' );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Display your WordPress menus as a dropdown select box. Great for mobile designs.",300,31221,88,"2013-01-16T18:15:00.000Z","3.5.2","3.0",[52,53,54,55,56],"dropdowns","menus","mobile","navigation","ui","http:\u002F\u002Finterconnectit.com\u002F?p=2190","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdropdown-menus.1.0.zip",{"slug":60,"name":61,"version":62,"author":5,"author_profile":6,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":67,"num_ratings":68,"last_updated":69,"tested_up_to":70,"requires_at_least":50,"requires_php":27,"tags":71,"homepage":77,"download_link":78,"security_score":9,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"flickr-api","Flickr API","0.1.9","\u003Cp>The Flickr API plugin provides tools for displaying your flickr galleries, sets, photostream or favourites and more using a shortcode in posts and pages or as a widget. You can choose the size of image you want, whether it should be linked to another image size or back to flickr or not linked at all, how many images to show and more…\u003C\u002Fp>\n\u003Cp>There are some built in options for displaying your images as a simple slideshow or using the Galleria jquery plugin. Alternatively you can choose to style the output yourself and use your own javascript.\u003C\u002Fp>\n\u003Cp>For developers the plugin also gives you an easy method for calling and caching API responses both in PHP and javascript, and lots of useful tools for working with those responses.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>You will need to get an API key from flickr to use this plugin. Under the ‘You’ menu look for ‘Your Apps’. Click to get a key and then go to the media settings screen to add your API key and user name. The plugin will automatically determine your NSID so you never need to look this up.\u003C\u002Fp>\n\u003Cp>To use the plugin either generate a shortcode using the media upload\u002Finsert button and selecting what you want to get or use the Flickr widget provided.\u003C\u002Fp>\n\u003Ch4>For developers\u003C\u002Fh4>\n\u003Cp>The plugin exposes its methods for your use in themes as template tags but the main one you may find useful is \u003Ccode>flickr_api()\u003C\u002Fcode>. This is a general function for calling any API method with the parameters you specify.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n$response = json_decode( flickr_api( $method, $params, $cache ) );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>All responses are in JSON format so you will need to use \u003Ccode>json_decode()\u003C\u002Fcode> to use the response in PHP.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>@param $method: (string)    This is the API method to call\n@param $params: (array)     Additional arguments to pass into the call such as user_id, photoset_id, gallery_id, text, tags etc...\n@param $cache : (bool)      Whether or not to cache the response based on the arguments passed in\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can use the API via javascript as well:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cscript>\nvar photos = flickr_api( method, params, cache );\n\u003C\u002Fscript>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>NSID lookup:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n$nsid = flickr_get_user_nsid( $username );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Just pass in the Flickr username of the person to get the NSID for.\u003C\u002Fp>\n\u003Ch4>Filters\u002FHooks\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>flickr_galleria_themes\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can enable the choice of custom or purchased galleria themes by extending the themes array. Useful if you want your theme to have a choice of galleria theme beyond the ‘classic’ style.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'flickr_galleria_themes', 'my_galleria_themes' );\nfunction my_galleria_themes( $themes ) {\n    $themes[ \u002F* full or relative url to theme js file *\u002F ] = __( 'Theme Name' );\n    return $themes;\n}\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n","A comprehensive Flickr plugin that makes it easy to show off your images in style.",20,8977,50,2,"2014-07-24T15:23:00.000Z","3.9.40",[72,73,74,75,76],"flickr","galleries","gallery","images","photos","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fflickr-api\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fflickr-api.0.1.9.zip",{"slug":80,"name":81,"version":82,"author":5,"author_profile":6,"description":83,"short_description":84,"active_installs":85,"downloaded":86,"rating":87,"num_ratings":68,"last_updated":88,"tested_up_to":70,"requires_at_least":89,"requires_php":27,"tags":90,"homepage":95,"download_link":96,"security_score":9,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"appcachify","Appcachify","0.1","\u003Cp>The plugin adds an iframe to the footer of your website which points to \u003Ccode>example.com\u002Fmanifest\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>That URL is an empty page that references the generated manifest file at \u003Ccode>example.com\u002Fmanifest.appcache\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>The manifest itself is built in the following way:\u003C\u002Fp>\n\u003Col>\n\u003Cli>adds URLs of all queued scripts and styles\u003C\u002Fli>\n\u003Cli>searches theme files and folder for any images or other static assets\u003C\u002Fli>\n\u003Cli>if a theme has a 307.php template it is used as an offline fallback\u003C\u002Fli>\n\u003Cli>a timestamp of the most recently modified file is added to force appcache to refresh\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The net result of all this is that your main static files are stored locally on your visitors devices. For mobile this greatly helps to improve download and rendering times.\u003C\u002Fp>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Ch3>Adding items to the manifest\u003C\u002Fh3>\n\u003Cp>Appcache can do more than store static assets. You could cache entire pages, or add fallbacks for when a user is offline.\u003C\u002Fp>\n\u003Cp>There are 3 main sections to a manifest:\u003C\u002Fp>\n\u003Ch4>CACHE\u003C\u002Fh4>\n\u003Cp>The main \u003Ccode>CACHE\u003C\u002Fcode> section is for URLs that should be explicitly cached.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'appcache_cache', function( $urls ) {\n   $urls[] = '\u002Fpage-available-offline\u002F';\n   return $urls;\n} );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>NETWORK\u003C\u002Fh4>\n\u003Cp>This section is for specifying URLs that should \u003Cem>never\u003C\u002Fem> be cached.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'appcache_network', function( $urls ) {\n   $urls[] = '*';\n   $urls[] = '\u002Fonline-only-page\u002F';\n   return $urls;\n} );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>FALLBACK\u003C\u002Fh4>\n\u003Cp>The fallback section allows you to set fallback pages or images if the user is offline.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'appcache_fallback', function( $patterns ) {\n   $patterns[] = 'wp-content\u002Fuploads\u002F wp-content\u002Fuploads\u002Foffline.jpg';\n   return $patterns;\n} );\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>The update header\u003C\u002Fh4>\n\u003Cp>Appcaches are refetched when the manifest file content changes so we add a few items as comments at the top of the file.\u003C\u002Fp>\n\u003Col>\n\u003Cli>The current theme (and version if available)\u003C\u002Fli>\n\u003Cli>The most recent modified time of any files we find the server path for\u003C\u002Fli>\n\u003Cli>\n\u003Cp>The size of all the files that we find a server path for\u003C\u002Fp>\n\u003Cp>get_var( “SELECT post_modified FROM $wpdb->posts WHERE post_type = ‘post’ ORDER BY post_modified DESC LIMIT 1” );\u003Cbr \u002F>\n   return $headers;\u003Cbr \u002F>\n} );\u003Cbr \u002F>\n?>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>More about appcache\u003C\u002Fh3>\n\u003Cp>I strongly recommend learning more about what you can do with appcache by reading the following articles:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.html5rocks.com\u002Fen\u002Ftutorials\u002Fappcache\u002Fbeginner\u002F\" rel=\"nofollow ugc\">HTML5 Rock’s Introduction to Appcache\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Falistapart.com\u002Farticle\u002Fapplication-cache-is-a-douchebag\" rel=\"nofollow ugc\">Application cache is a douchebag\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Adds an HTML5 appcache manifest to speed up your site by storing static assets client-side.",10,1885,100,"2014-07-24T14:20:00.000Z","3.8",[91,92,93,94],"appcache","caching","html5","performance","http:\u002F\u002Finterconnectit.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fappcachify.zip",{"slug":98,"name":99,"version":100,"author":5,"author_profile":6,"description":101,"short_description":102,"active_installs":85,"downloaded":103,"rating":36,"num_ratings":36,"last_updated":104,"tested_up_to":105,"requires_at_least":26,"requires_php":27,"tags":106,"homepage":27,"download_link":111,"security_score":9,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"query-editor","Query Editor","0.3.1","\u003Cp>Adds a simple set of options to modify the default query. Be careful, this affects all list type\u003Cbr \u002F>\npages on the site and not just the home page.\u003C\u002Fp>\n\u003Cp>You can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Customise the post types used\u003C\u002Fli>\n\u003Cli>Exclude terms from any taxonomy\u003C\u002Fli>\n\u003Cli>Change the ordering\u003C\u002Fli>\n\u003Cli>Set an offset to skip posts\u003C\u002Fli>\n\u003Cli>Turn paging off\u003C\u002Fli>\n\u003Cli>Use a simple meta query\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Any problems, bugs or feature requests will be answered the quickest on twitter \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fsanchothefat\" rel=\"nofollow ugc\">@sanchothefat\u003C\u002Fa>.\u003C\u002Fp>\n","Adds a simple set of options to modify the default query by changing what post types are used, the ordering and more.",2239,"2012-03-12T12:10:00.000Z","3.3.2",[29,107,108,109,110],"editor","loop","posts","query","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fquery-editor.0.3.1.zip"]