[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1uLxGFpp72Pzuuymek7APNgrkpD8XBtX_c4p0MRCHfI":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},"jchristopher","Jon Christopher","https:\u002F\u002Fprofiles.wordpress.org\u002Fjchristopher\u002F",11,109940,89,30,86,"2026-04-04T05:01:44.924Z",[14,39,59,80,97,115,131,150,168,187,199],{"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":33,"download_link":34,"security_score":35,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"duplicate-menu","Duplicate Menu","0.2.3","\u003Cp>Some WordPress installs use very elaborate navigation systems powered by core Menus. They’re a fantastic feature that can often make or break a theme. Menus aren’t very portable out of the box, however. If you’re looking to make a change to a Menu you’re pretty much working live without a quick way to revert back to an old version. That’s where Duplicate Menu comes in.\u003C\u002Fp>\n\u003Cp>Duplicate Menu will allow you to create a second (or third, or fourth, etc.) copy of an existing Menu to do with what you will. It generates the clone on a programmatic level and recreates all necessary relationships to ensure the structure is retained as well.\u003C\u002Fp>\n\u003Cp>Find out more information in my \u003Ca href=\"https:\u002F\u002Fjonchristopher.us\u002Fblog\u002Fwordpress-plugin-duplicate-menu\u002F\" rel=\"nofollow ugc\">explanatory article on Duplicate Menu\u003C\u002Fa>\u003C\u002Fp>\n","Easily duplicate your WordPress menus with one click.",100000,572290,92,104,"2025-12-30T15:25:00.000Z","6.9.4","3.4.2","",[29,30,31,32],"clone","copy","duplicate","menu","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fduplicate-menu","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fduplicate-menu.0.2.3.zip",100,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":48,"last_updated":49,"tested_up_to":25,"requires_at_least":50,"requires_php":27,"tags":51,"homepage":57,"download_link":58,"security_score":35,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"attachments","Attachments","3.5.11","\u003Cp>\u003Cstrong>Extensive\u003C\u002Fstrong> usage instructions are \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fattachments\u002F#attachments\" rel=\"nofollow ugc\">available on GitHub\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Attachments allows you to simply append any number of items from your WordPress Media Library to Posts, Pages, and Custom Post Types.\u003C\u002Fp>\n\u003Ch4>Associate Media items with posts\u003C\u002Fh4>\n\u003Cp>The idea behind Attachments is to give developers the ability to directly associate Media items with any post. This is accomplished by adding a meta box to post edit screens as determined by the developer. Once Media items have been associated with a post, you’re able to retrieve those Attachments and include them directly within your template files using any specific markup you wish.\u003C\u002Fp>\n\u003Ch4>Integrate Attachments within your theme with fine grained control\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Attachments does not automatically integrate itself with your theme.\u003C\u002Fstrong> Since the idea behind Attachments is to allow integration of Media within posts using developer-crafted, unique markup, \u003Cem>it’s up to you to integrate with your theme\u003C\u002Fem>. The most basic integration includes editing the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FTemplate_Hierarchy\" rel=\"nofollow ugc\">appropriate template file\u003C\u002Fa> and adding your call(s) to Attachments. For example, if you have set up Attachments to be used with your Posts entries, edit \u003Ccode>single.php\u003C\u002Fcode> to include the following within The Loop:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php $attachments = new Attachments( 'attachments' ); \u002F* pass the instance name *\u002F ?>\n\u003C?php if( $attachments->exist() ) : ?>\n  \u003Ch3>Attachments\u003C\u002Fh3>\n  \u003Cp>Total Attachments: \u003C?php echo $attachments->total(); ?>\u003C\u002Fp>\n  \u003Cul>\n    \u003C?php while( $attachments->get() ) : ?>\n      \u003Cli>\n        ID: \u003C?php echo $attachments->id(); ?>\u003Cbr \u002F>\n        Type: \u003C?php echo $attachments->type(); ?>\u003Cbr \u002F>\n        Subtype: \u003C?php echo $attachments->subtype(); ?>\u003Cbr \u002F>\n        URL: \u003C?php echo $attachments->url(); ?>\u003Cbr \u002F>\n        Image: \u003C?php echo $attachments->image( 'thumbnail' ); ?>\u003Cbr \u002F>\n        Source: \u003C?php echo $attachments->src( 'full' ); ?>\u003Cbr \u002F>\n        Size: \u003C?php echo $attachments->filesize(); ?>\u003Cbr \u002F>\n        Title Field: \u003C?php echo $attachments->field( 'title' ); ?>\u003Cbr \u002F>\n        Caption Field: \u003C?php echo $attachments->field( 'caption' ); ?>\n      \u003C\u002Fli>\n    \u003C?php endwhile; ?>\n  \u003C\u002Ful>\n\u003C?php endif; ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>That snippet will request all of the existing Attachments defined for the current Post within The Loop, and retrieve each itemized property for that Attachment. Using the provided details you’re able to integrate the attached Media items in any way you please.\u003C\u002Fp>\n\u003Cp>There is a lot more information on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fattachments\" rel=\"nofollow ugc\">Attachments’ GitHub page\u003C\u002Fa>. Please contribute!\u003C\u002Fp>\n\u003Ch3>Roadmap\u003C\u002Fh3>\n\u003Cp>Please see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fattachments\u002Fblob\u002Fmaster\u002Fdocs\u002Froadmap.md\" rel=\"nofollow ugc\">Attachments on GitHub\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Extensive\u003C\u002Fstrong> usage instructions are \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fattachments\u002Fblob\u002Fmaster\u002Fdocs\u002Fusage.md\" rel=\"nofollow ugc\">available on GitHub\u003C\u002Fa>\u003C\u002Fp>\n","Attachments allows you to simply append any number of items from your WordPress Media Library to Posts, Pages, and Custom Post Types",9000,281160,96,53,"2025-12-30T15:11:00.000Z","3.0",[52,53,54,55,56],"attachment","page","pdf","picture","post","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fattachments","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fattachments.3.5.11.zip",{"slug":60,"name":61,"version":62,"author":5,"author_profile":6,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":35,"num_ratings":67,"last_updated":68,"tested_up_to":69,"requires_at_least":70,"requires_php":27,"tags":71,"homepage":77,"download_link":78,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"cfs-options-screens","CFS Options Screens","1.2.7","\u003Cp>Build any number of options screens based on \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcustom-field-suite\u002F\" rel=\"ugc\">Custom Field Suite\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>For Example\u003C\u002Fh4>\n\u003Cp>Begin by creating Field Group(s) you want to include on your options screen. \u003Cstrong>Be sure to set NO Placement Rules.\u003C\u002Fstrong> Once it’s created, note the post ID it uses. You can then register any number of options screens like so:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function my_cfs_options_screens( $screens ) {\n    $screens[] = array(\n        'name'            => 'options',\n        'menu_title'      => __( 'Site Options' ),\n        'page_title'      => __( 'Customize Site Options' ),\n        'menu_position'   => 100,\n        'icon'            => 'dashicons-admin-generic', \u002F\u002F optional, dashicons-admin-generic is the default\n        'field_groups'    => array( 'My Field Group' ), \u002F\u002F Field Group name(s) of CFS Field Group to use on this page (can also be post IDs)\n    );\n\n    return $screens;\n}\n\nadd_filter( 'cfs_options_screens', 'my_cfs_options_screens' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Retrieve your options like so:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>$value = cfs_get_option( 'options_screen_name', 'cfs_field_name_from_field_group' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can set up multiple top level and\u002For children options pages by adding a \u003Ccode>parent\u003C\u002Fcode> argument when registering your screen:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function my_cfs_options_screens( $screens ) {\n\n    \u002F\u002F Parent\n    $screens[] = array(\n        'name'         => 'options',\n        'field_groups' => array( 'My Parent Field Group Name' ),\n    );\n\n    \u002F\u002F Child\n    $screens[] = array(\n        'name'         => 'options-nav',\n        'parent'       => 'options', \u002F\u002F name of the parent\n        'field_groups' => array( 'My Child Field Group Name' ),\n    );\n\n    return $screens;\n }\n\n add_filter( 'cfs_options_screens', 'my_cfs_options_screens' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can also use CFS Options Screens to set up Field Group ‘defaults’, allowing a Field Group to appear both on a CFS Options Screen and a post edit screen. The CFS Options Screen will act as the default\u002Ffallback and the post edit screen will override those defaults.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function my_cfs_options_screens( $screens ) {\n    $screens[] = array(\n        'name'            => 'options',\n        'menu_title'      => __( 'Site Options' ),\n        'page_title'      => __( 'Customize Site Options' ),\n        'menu_position'   => 100,\n        'icon'            => 'dashicons-admin-generic', \u002F\u002F optional, dashicons-admin-generic is the default\n        'field_groups'    => array(\n            array(\n                'title'         => 'My CFS Field Group Name',\n                'has_overrides' => true,\n            ),\n        ),\n    );\n\n    return $screens;\n}\n\nadd_filter( 'cfs_options_screens', 'my_cfs_options_screens' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Check out the \u003Ccode>cfs_options_screens_override_note_default\u003C\u002Fcode> and \u003Ccode>cfs_options_screens_override_note_override\u003C\u002Fcode> filters to customize the messaging for CFS Options Screens overrides.\u003C\u002Fp>\n","Create options screens that utilize Custom Field Suite",400,6812,2,"2022-02-10T17:11:00.000Z","5.9.0","3.9",[72,73,74,75,76],"cfs","custom-field-suite","options","screen","settings","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcfs-options-screens\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcfs-options-screens.1.2.7.zip",85,{"slug":81,"name":82,"version":83,"author":5,"author_profile":6,"description":84,"short_description":85,"active_installs":86,"downloaded":87,"rating":35,"num_ratings":67,"last_updated":88,"tested_up_to":25,"requires_at_least":89,"requires_php":27,"tags":90,"homepage":95,"download_link":96,"security_score":35,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"menu-breadcrumb","Menu Breadcrumb","1.0.3","\u003Cp>Breadcrumbs are often generated from Page structure, but in a world of Custom Post Types that doesn’t always work. Menu Breadcrumb uses your WordPress Menu to generate a breadcrumb trail based on the current page.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fmenu-breadcrumb\" rel=\"nofollow ugc\">View on GitHub!\u003C\u002Fa>\u003C\u002Fp>\n","Generate a breadcrumb trail from a WordPress Menu",300,7609,"2025-12-30T15:40:00.000Z","4.0",[91,92,32,93,94],"breadcrumb","breadcrumbs","nav","navigation","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fmenu-breadcrumb","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmenu-breadcrumb.1.0.3.zip",{"slug":98,"name":99,"version":100,"author":5,"author_profile":6,"description":101,"short_description":102,"active_installs":35,"downloaded":103,"rating":104,"num_ratings":105,"last_updated":106,"tested_up_to":69,"requires_at_least":107,"requires_php":27,"tags":108,"homepage":113,"download_link":114,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"hierarchy","Hierarchy","1.0.5.1","\u003Cp>\u003Cstrong>NOTE\u003C\u002Fstrong>: If you’re looking for something more user-focused, take a look at \u003Ca href=\"https:\u002F\u002Forganizewp.com\u002F?utm_source=wordpressorg&utm_medium=link&utm_campaign=readme\" rel=\"nofollow ugc\">OrganizeWP\u003C\u002Fa> which is complete rethinking of Hierarchy!\u003C\u002Fp>\n\u003Cp>Custom Post Types (sometimes) need context, Hierarchy allows you to rework your content management workflow by essentially \u003Cstrong>moving Custom Post Type admin menus into your Pages list\u003C\u002Fstrong>. What this does is mimic the navigation you’ve set up on your site by placing Custom Post Type edit links amongst your Pages where they belong.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhierarchy\u002Fscreenshots\u002F\" rel=\"ugc\">\u003Cstrong>&raquo; Check out the screenshots to see Hierarchy in action\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Hierarchy removes unnecessary entries from the Admin Menu and instead injects theme where appropriate amongst your Pages, grouping everything under a single ‘Content’ Admin Menu entry.\u003C\u002Fp>\n\u003Ch4>Custom Post Types NEED context\u003C\u002Fh4>\n\u003Cp>Custom Post Types are great, but the \u003Cstrong>editing workflow can be improved\u003C\u002Fstrong>. Adding a Custom Post Type likely results in \u003Cem>another\u003C\u002Fem> WordPress admin sidebar menu, abstracting the management of that content from the main organization of your site, Pages. Hierarchy intelligently extends your Pages menu by including your Custom Post Type admin links \u003Cem>within\u003C\u002Fem> the Page structure, allowing for a much more natural workflow when managing your content.\u003C\u002Fp>\n\u003Ch4>Examples\u003C\u002Fh4>\n\u003Cp>Chances are you’ve customized your \u003Ccode>Front page displays\u003C\u002Fcode> setting to display a static page instead of your latest blog posts. Now you’ve got a sidebar link to manage your Posts and a WordPress Page called “Blog” that sites in your list of Pages doing absolutely nothing. Hierarchy remedies both problems by converting the “Blog” page link to be one that lists your Posts. It also hides the Posts sidebar entry (if you want it to).\u003C\u002Fp>\n\u003Cp>It’s also likely that you’re utilizing Custom Post Types to power sections of your website, but it’s awkward to manage the content of an internal section of your website using the main WordPress admin sidebar links to your Custom Post Type. Hierarchy will allow you to hide those sidebar links and instead nest them amongst your Pages, providing contextual links to manage the content of your Custom Post Types.\u003C\u002Fp>\n\u003Ch4>More information\u003C\u002Fh4>\n\u003Cp>If you’d like a lot more information on the implementation and workflow changes, \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhierarchy\u002Fscreenshots\u002F\" rel=\"ugc\">check out the screenshots\u003C\u002Fa> and please see \u003Ca href=\"https:\u002F\u002Fmondaybynoon.com\u002Fintroducing-hierarchy\u002F\" rel=\"nofollow ugc\">the introduction\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fmondaybynoon.com\u002Fhierarchy-1-0-is-here\u002F\" rel=\"nofollow ugc\">the follow-up for 1.0\u003C\u002Fa>.\u003C\u002Fp>\n","Move your Pages\u002FPosts\u002FCustom Post Type admin links from the sidebar to a Content menu that nests everything where it should be",14536,94,13,"2022-02-10T17:15:00.000Z","3.8",[109,110,98,111,112],"cpt","custom-post-types","pages","url","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fhierarchy\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fhierarchy.1.0.5.1.zip",{"slug":116,"name":117,"version":118,"author":5,"author_profile":6,"description":119,"short_description":120,"active_installs":121,"downloaded":122,"rating":36,"num_ratings":36,"last_updated":123,"tested_up_to":69,"requires_at_least":124,"requires_php":27,"tags":125,"homepage":129,"download_link":130,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"cfs-yoast-analysis","CFS Yoast Analysis","1.0.0","\u003Cp>CFS Yoast Analysis will include content from \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcustom-field-suite\u002F\" rel=\"ugc\">Custom Field Suite\u003C\u002Fa> powered \u003Ccode>input[type=\"text\"]\u003C\u002Fcode>s and \u003Ccode>textarea\u003C\u002Fcode>s in Yoast SEO Content Analysis.\u003C\u002Fp>\n\u003Cp>\u003Cem>Forked from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FYoast\u002Fyoast-acf-analysis\" rel=\"nofollow ugc\">Yoast ACF Analysis\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\n","Integrate Custom Field Suite content into Yoast SEO Content Analysis",60,2105,"2022-02-10T17:13:00.000Z","4.6",[126,72,73,127,128],"analysis","seo","yoast","https:\u002F\u002Fmondaybynoon.com\u002Fdownloads\u002Fcfs-yoast-analysis\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcfs-yoast-analysis.1.0.0.zip",{"slug":132,"name":133,"version":134,"author":5,"author_profile":6,"description":135,"short_description":136,"active_installs":137,"downloaded":138,"rating":139,"num_ratings":140,"last_updated":141,"tested_up_to":69,"requires_at_least":89,"requires_php":27,"tags":142,"homepage":148,"download_link":149,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"wpseo-pinterest-rich-pins-for-woocommerce","WPSEO Pinterest Rich Pins for WooCommerce","0.1.1","\u003Cp>Add Pinterest Rich Pin data to WooCommerce Product Pages via \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwordpress-seo\u002F\" rel=\"ugc\">WordPress SEO by Yoast\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This plugin is being actively developed on GitHub \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fwpseo-pinterest-rich-pins-woocommerce\" rel=\"nofollow ugc\">https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fwpseo-pinterest-rich-pins-woocommerce\u003C\u002Fa>. Please contribute!\u003C\u002Fp>\n","Add Pinterest Rich Pin data to WooCommerce Product Pages via WordPress SEO by Yoast",40,4498,68,5,"2022-02-10T17:25:00.000Z",[143,144,145,146,147],"open","opengraph","pins","pinterest","rich","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fwpseo-pinterest-rich-pins-woocommerce","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpseo-pinterest-rich-pins-for-woocommerce.0.1.1.zip",{"slug":151,"name":152,"version":153,"author":5,"author_profile":6,"description":154,"short_description":155,"active_installs":156,"downloaded":157,"rating":36,"num_ratings":36,"last_updated":158,"tested_up_to":69,"requires_at_least":159,"requires_php":27,"tags":160,"homepage":166,"download_link":167,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"new-user-password-reset","New User Password Reset","1.0","\u003Cp>It’s insecure to send user account passwords via email, so use this plugin to issue a password reset instead.\u003C\u002Fp>\n","Automatically issue a password reset when creating new Users",20,2263,"2022-02-10T17:20:00.000Z","3.6",[161,162,163,164,165],"auto","password","registration","reset","user","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fnew-user-password-reset","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnew-user-password-reset.1.0.zip",{"slug":169,"name":170,"version":171,"author":5,"author_profile":6,"description":172,"short_description":173,"active_installs":174,"downloaded":175,"rating":35,"num_ratings":176,"last_updated":177,"tested_up_to":178,"requires_at_least":179,"requires_php":27,"tags":180,"homepage":185,"download_link":186,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"linkmarklet","Linkmarklet","0.8","\u003Cp>\u003Cstrong>ADOPT ME!\u003C\u002Fstrong> Press This! was completely revamped in WordPres 4.2 and as such I will be focusing any effort that may have been put into Linkmarklet into that feature. As a result I am actively seeking someone to take over development of Linkmarklet. Thank you for considering!\u003C\u002Fp>\n\u003Cp>Instead of the traditional Press This! interface, Linkmarklet offers a much more streamlined UI allowing you to linkblog quickly. Upon clicking the bookmarklet, Linkmarklet will present you with a simple way of editing the page title, the page link, the page slug, and the post content. In the settings you can define three things:\u003C\u002Fp>\n\u003Col>\n\u003Cli>The category to which Linkmarklet posts will be added\u003C\u002Fli>\n\u003Cli>The Custom Field name you’re using to store the submitted link\u003C\u002Fli>\n\u003Cli>The Post Format you would like to use for each post\u003C\u002Fli>\n\u003Cli>Whether or not to Future Post the current post and by how many minutes compared to your future-most scheduled post\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>That’s about it. Clicking Publish pushes the entry live instantly (or schedules it). Clicking Save will store the post as a Draft.\u003C\u002Fp>\n","[ADOPT ME!] Linkmarklet is an alternative to the Press This! bookmarklet aimed at rapid linkblogging. Quickly post while saving a link to a Custom Fie &hellip;",10,3546,3,"2015-05-01T19:43:00.000Z","4.2.39","3.3",[181,182,183,184],"adopt-me","link","linkblog","press-this","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Flinkmarklet","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flinkmarklet.0.8.zip",{"slug":188,"name":189,"version":190,"author":5,"author_profile":6,"description":191,"short_description":192,"active_installs":174,"downloaded":193,"rating":36,"num_ratings":36,"last_updated":194,"tested_up_to":69,"requires_at_least":70,"requires_php":27,"tags":195,"homepage":197,"download_link":198,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"template-map","Template Map","1.0.1","\u003Cp>Template Map is a utility plugin designed to make the creation and management of navigation elements in your custom theme that much easier. It abstracts the need to hard code post IDs and the like from your global and header navigation systems (if you choose to not use Menus) for instance.\u003C\u002Fp>\n\u003Ch4>For Example\u003C\u002Fh4>\n\u003Cp>Many times you may use something like the following to build your main site navigation:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cnav>\n  \u003Cul>\n    \u003Cli>\n      \u003Ca href=\"\u003C?php echo get_permalink( 83 ); ?>\">About\u003C\u002Fa>\n    \u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Fnav>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>That works great during initial development, and continues to hold up when you migrate to production en masse for the first time. But what about when you’re making subsequent updates and the post IDs in your development environment are different than those in production? You could take the time to sync the databases each and every time, but that’s a bit overkill. Here’s where Template Map comes in to play:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cnav>\n  \u003Cul>\n    \u003Cli>\n      \u003C?php $about_page_id = TemplateMap()->get_id_from_template( 'template-about.php' ); ?>\n      \u003Ca href=\"\u003C?php echo get_permalink( $about_page_id ); ?>\">About\u003C\u002Fa>\n    \u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Fnav>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Template Map allows you to \u003Cem>dynamically\u003C\u002Fem> retreive your desired post ID based on the Page Template you told it to use. Page Template filenames rarely (if ever) change, so it’s the core concept of Template Map’s implementation. Everything works backwards from here.\u003C\u002Fp>\n\u003Cp>Naturally this philosophy assumes your Page Template is used only once, it’s important to keep that in mind. Modern client sites often use unique Page Templates for the ‘parent’ pages of each site section.\u003C\u002Fp>\n\u003Ch4>Current Site Section\u003C\u002Fh4>\n\u003Cp>Template Map also makes it easier to determine whether the current page is within a site ‘section’ which is defined as a top level Page with a unique Page Template that has any number of child Pages and\u002For Custom Post Types within it. This is very useful when trying to set a ‘current’ state in your navigation, for example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cnav>\n  \u003Cul>\n    \u003Cli class=\"\u003C?php if( TemplateMap()->maybe_in_section( 'template-about.php' ) ) : ?> current\u003C?php endif; ?>\">\n      \u003C?php $about_page_id = TemplateMap()->get_id_from_template( 'template-about.php' ); ?>\n      \u003Ca href=\"\u003C?php echo get_permalink( $about_page_id ); ?>\">About\u003C\u002Fa>\n    \u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Fnav>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Based on the same principle you can use this utility method to properly orient yourself when outputting conditional classes contingent on the current page being within a ‘secton’ on your site.\u003C\u002Fp>\n","Automagic mapping of Page Templates to post IDs to facilitate better dynamic link generation",1853,"2022-02-10T17:27:00.000Z",[182,196],"template","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftemplate-map\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftemplate-map.1.0.1.zip",{"slug":200,"name":201,"version":118,"author":5,"author_profile":6,"description":202,"short_description":203,"active_installs":36,"downloaded":204,"rating":35,"num_ratings":205,"last_updated":206,"tested_up_to":69,"requires_at_least":207,"requires_php":208,"tags":209,"homepage":214,"download_link":215,"security_score":79,"vuln_count":36,"unpatched_count":36,"last_vuln_date":37,"fetched_at":38},"postmark-open-to-edd-customer-note","Postmark Open to EDD Customer Note","\u003Cp>Sets up a REST endpoint to be used by Postmark’s Open Webhook to log opens of Postmark-delivered (via Postmark Approved) messages as Easy Digital Downloads (EDD) Customer Notes\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Requires\u003C\u002Fstrong> both \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpostmark-approved-wordpress-plugin\u002F\" rel=\"ugc\">Postmark Approved\u003C\u002Fa> (with an accurate Server API key) and \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Feasy-digital-downloads\u002F\" rel=\"ugc\">Easy Digital Downloads\u003C\u002Fa> (2.6+) to be installed and active\u003C\u002Fp>\n\u003Cp>Please see the GitHub repository: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fpostmark-open-to-edd-customer-note\" rel=\"nofollow ugc\">https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fpostmark-open-to-edd-customer-note\u003C\u002Fa>\u003C\u002Fp>\n","Add a Customer Note when a Postmark-delivered email has been opened by an EDD Customer",1241,1,"2022-02-10T17:28:00.000Z","4.8","5.6",[210,211,143,212,213],"edd","note","postmark","webhook","https:\u002F\u002Fgithub.com\u002Fjchristopher\u002Fpostmark-open-to-edd-customer-note","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpostmark-open-to-edd-customer-note.1.0.0.zip"]