[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$flUB8Op91vyuoYfqmBPIXhg3fRAitPj9n8S9HqOC6ZOU":3,"$fj5Mhvwj23snc56Ww7PjSxZhMO7og-P0xgLTT9WCWAIg":251,"$fdIeqeS4gZjzs2iiaaVsG3_u6jpa-wixGZeJ-iggv5Vo":255},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"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":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"discovery_status":30,"vulnerabilities":31,"developer":32,"crawl_stats":28,"alternatives":40,"analysis":136,"fingerprints":233},"post-meta-manager","Post Meta Manager","1.0.4","Andrew Norcross","https:\u002F\u002Fprofiles.wordpress.org\u002Fnorcross\u002F","\u003Cp>Creates a panel to change or delete meta keys in bulk. Useful for when you are switching plugins or themes that use specific meta keys for functionality, or for general cleanup for older sites that may have older meta data that is no longer in use.\u003C\u002Fp>\n","A simple utility plugin for changing or deleting post or user meta (custom fields) keys in bulk.",100,9093,2,"2016-03-18T18:38:00.000Z","4.4.34","3.0","",[19,20,21,22,23],"custom-field","custom-fields","metadata","post-meta","postmeta","http:\u002F\u002Fandrewnorcross.com\u002Fplugins\u002Fpost-meta-manager\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-meta-manager.1.0.4.zip",85,0,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":33,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":36,"avg_patch_time_days":37,"trust_score":38,"computed_at":39},"norcross",20,2140,86,30,84,"2026-05-20T04:11:42.570Z",[41,61,84,97,116],{"slug":42,"name":43,"version":44,"author":45,"author_profile":46,"description":47,"short_description":48,"active_installs":49,"downloaded":50,"rating":36,"num_ratings":51,"last_updated":52,"tested_up_to":53,"requires_at_least":54,"requires_php":55,"tags":56,"homepage":59,"download_link":60,"security_score":11,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"wp-admin-search-meta","WP-Admin Search Post Meta","0.4","meloniq","https:\u002F\u002Fprofiles.wordpress.org\u002Fmeloniq\u002F","\u003Cp>Enhance the default WordPress admin search by including custom fields (post meta) in search results.\u003Cbr \u002F>\nThis plugin seamlessly extends the post listing (edit.php) search functionality, allowing administrators to quickly find content based on values stored in custom fields.\u003C\u002Fp>\n\u003Cp>It works out of the box with no configuration required—just activate and start searching.\u003Cbr \u002F>\nEspecially useful for sites that rely heavily on custom fields, such as those built with ACF or other meta-based data structures.\u003C\u002Fp>\n\u003Cp>Lightweight, efficient, and fully integrated with the native WordPress admin experience.\u003C\u002Fp>\n","Search WordPress admin posts by custom fields (post meta) directly from the default search.",300,6597,10,"2026-04-05T21:44:00.000Z","6.9.4","4.9","7.4",[20,22,23,57,58],"search","wp-admin","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-admin-search-meta\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-admin-search-meta.0.4.zip",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":11,"num_ratings":71,"last_updated":72,"tested_up_to":53,"requires_at_least":73,"requires_php":74,"tags":75,"homepage":79,"download_link":80,"security_score":81,"vuln_count":82,"unpatched_count":27,"last_vuln_date":83,"fetched_at":29},"jsm-show-post-meta","JSM Show Post Metadata","4.8.0","JS Morisset","https:\u002F\u002Fprofiles.wordpress.org\u002Fjsmoriss\u002F","\u003Cp>The JSM Show Post Metadata plugin displays post (ie. posts, pages, and custom post types) meta keys (aka custom field names) and unserialized values in a metabox at the bottom of the post editing page.\u003C\u002Fp>\n\u003Cp>Note that if you’re using WooCommerce HPOS (High-Performance Order Storage), available since WooCommerce v8.2, then your WooCommerce orders are NOT post objects and you should use the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-order-meta\u002F\" rel=\"ugc\">JSM Show Order Metadata\u003C\u002Fa> plugin instead.\u003C\u002Fp>\n\u003Cp>There are no plugin settings – simply install and activate the plugin.\u003C\u002Fp>\n\u003Ch4>Available Filters for Developers\u003C\u002Fh4>\n\u003Cp>Filter the post meta shown in the metabox:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_metabox_table_metadata' ( array $metadata, $post_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Array of regular expressions to exclude meta keys:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_metabox_table_exclude_keys' ( array $exclude_keys, $post_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Capability required to show post meta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_show_metabox_capability' ( 'manage_options', $post_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show post meta for a post type (defaults to true):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_show_metabox_post_type' ( true, $post_type )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Capability required to delete post meta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_delete_meta_capability' ( 'manage_options', $post_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Icon for the delete post meta button:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmspm_delete_meta_icon_class' ( 'dashicons dashicons-table-row-delete' )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Related Plugins\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-comment-meta\u002F\" rel=\"ugc\">JSM Show Comment Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-order-meta\u002F\" rel=\"ugc\">JSM Show Order Metadata for WooCommerce HPOS\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-post-meta\u002F\" rel=\"ugc\">JSM Show Post Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-term-meta\u002F\" rel=\"ugc\">JSM Show Term Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-user-meta\u002F\" rel=\"ugc\">JSM Show User Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-registered-shortcodes\u002F\" rel=\"ugc\">JSM Show Registered Shortcodes\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Show post metadata (aka custom fields) in a metabox when editing posts \u002F pages - a great tool for debugging issues with post metadata.",10000,252472,12,"2026-03-25T12:14:00.000Z","6.0","7.4.33",[20,76,21,77,78],"inspector","post-types","posts","https:\u002F\u002Fsurniaulula.com\u002Fextend\u002Fplugins\u002Fjsm-show-post-meta\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjsm-show-post-meta.4.8.0.zip",99,1,"2025-01-24 00:00:00",{"slug":85,"name":86,"version":64,"author":65,"author_profile":66,"description":87,"short_description":88,"active_installs":89,"downloaded":90,"rating":11,"num_ratings":13,"last_updated":91,"tested_up_to":53,"requires_at_least":73,"requires_php":74,"tags":92,"homepage":95,"download_link":96,"security_score":11,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"jsm-show-user-meta","JSM Show User Metadata","\u003Cp>The JSM Show User Metadata plugin displays user profile meta keys and unserialized values in a metabox at the bottom of the user profile editing page.\u003C\u002Fp>\n\u003Cp>There are no plugin settings – simply install and activate the plugin.\u003C\u002Fp>\n\u003Ch4>Available Filters for Developers\u003C\u002Fh4>\n\u003Cp>Filter the user meta shown in the metabox:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_metabox_table_metadata' ( array $metadata, $user_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Array of regular expressions to exclude meta keys:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_metabox_table_exclude_keys' ( array $exclude_keys, $user_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Capability required to show user meta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_show_metabox_capability' ( 'manage_options', $user_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show user meta for a screen base (defaults to true):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_show_metabox_screen_base' ( true, $screen_base )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Capability required to delete user meta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_delete_meta_capability' ( 'manage_options', $user_obj )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Icon for the delete user meta button:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>'jsmsum_delete_meta_icon_class' ( 'dashicons dashicons-table-row-delete' )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Related Plugins\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-comment-meta\u002F\" rel=\"ugc\">JSM Show Comment Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-order-meta\u002F\" rel=\"ugc\">JSM Show Order Metadata for WooCommerce HPOS\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-post-meta\u002F\" rel=\"ugc\">JSM Show Post Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-term-meta\u002F\" rel=\"ugc\">JSM Show Term Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-user-meta\u002F\" rel=\"ugc\">JSM Show User Metadata\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjsm-show-registered-shortcodes\u002F\" rel=\"ugc\">JSM Show Registered Shortcodes\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Show user metadata in a metabox when editing users - a great tool for debugging issues with user metadata.",3000,96652,"2026-03-25T12:16:00.000Z",[20,76,21,93,94],"profile","users","https:\u002F\u002Fsurniaulula.com\u002Fextend\u002Fplugins\u002Fjsm-show-user-meta\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjsm-show-user-meta.4.8.0.zip",{"slug":98,"name":99,"version":100,"author":101,"author_profile":102,"description":103,"short_description":104,"active_installs":105,"downloaded":106,"rating":11,"num_ratings":34,"last_updated":107,"tested_up_to":108,"requires_at_least":54,"requires_php":109,"tags":110,"homepage":114,"download_link":115,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"ultimate-fields","Ultimate Fields","3.0.2","Radoslav Georgiev","https:\u002F\u002Fprofiles.wordpress.org\u002Fradogeorgiev\u002F","\u003Cp>With Ultimate Fields you can easily create fields in the admin. Those fields can be displayed when you are editing a post or page (any post type actually) or in an options page (ex. Theme Options) anywhere in the admin.\u003C\u002Fp>\n\u003Cp>Please visit \u003Ca href=\"https:\u002F\u002Fwww.ultimate-fields.com\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fwww.ultimate-fields.com\u002F\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Easy to use.\u003C\u002Fli>\n\u003Cli>Various field types (listed below)\u003C\u002Fli>\n\u003Cli>Support for Post Type and Options Page as locations for fields. All locations have advanced placement rules, in order to only show them when needed.\u003C\u002Fli>\n\u003Cli>WYSIWYG Field Creation\u003C\u002Fli>\n\u003Cli>Focused on developers: A clean object-oriented API allows you to cleanly define all of your fields through code.\u003C\u002Fli>\n\u003Cli>Perfected tabs, alignment and styles\u003C\u002Fli>\n\u003Cli>Import, Export and in-theme JSON Synchronization\u003C\u002Fli>\n\u003Cli>JavaScript-based interface\u003C\u002Fli>\n\u003Cli>Unlimited field nesting with the Repeater and Complex fields\u003C\u002Fli>\n\u003Cli>Conditional Logic between fields in the same container (and ones on upper levels)\u003C\u002Fli>\n\u003Cli>REST API Support\u003C\u002Fli>\n\u003Cli>Admin Columns\u003C\u002Fli>\n\u003Cli>Integration with WordPress SEO for automatic field content ratings\u003C\u002Fli>\n\u003Cli>Clean styles: Ultimate Fields follows WordPress’ built in styles as much as possible and provides a seamless experience. It’s even fully responsive.\u003C\u002Fli>\n\u003Cli>Full-featured interface for data loading\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Fields\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Text\u003C\u002Fli>\n\u003Cli>Textarea\u003C\u002Fli>\n\u003Cli>WYSIWYG Editor\u003C\u002Fli>\n\u003Cli>Password\u003C\u002Fli>\n\u003Cli>Number\u003C\u002Fli>\n\u003Cli>Checkbox\u003C\u002Fli>\n\u003Cli>Select\u003C\u002Fli>\n\u003Cli>Multiselect\u003C\u002Fli>\n\u003Cli>Image-Select (a visual select)\u003C\u002Fli>\n\u003Cli>File\u003C\u002Fli>\n\u003Cli>Image\u003C\u002Fli>\n\u003Cli>WP Object (for selection of an object among posts, terms and users)\u003C\u002Fli>\n\u003Cli>WP Objects (for multiple objects)\u003C\u002Fli>\n\u003Cli>Link\u003C\u002Fli>\n\u003Cli>Section\u003C\u002Fli>\n\u003Cli>Tab\u003C\u002Fli>\n\u003Cli>Complex\u003C\u002Fli>\n\u003Cli>Repeater\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Repeaters\u003C\u002Fh4>\n\u003Cp>Repeaters can be used to add repeatable groups of fields. You can combine a text and a file field into a Slide group and allow the user to add as many slides as he needs. The value is saved in a single field!\u003C\u002Fp>\n\u003Cp>Additionally you can add different types of groups into a single repeater. This way the user could add both Video Slides and Image Slides through the same place.\u003C\u002Fp>\n\u003Ch4>Embedding in themes and plugins\u003C\u002Fh4>\n\u003Cp>Ultimate Fields has all the necessary logic built in. Just place it wherever you need and include ultimate-fields.php\u003C\u002Fp>\n","Easy and powerful custom fields management: Post Meta, Options Pages, Repeaters and many field types!",900,14651,"2018-05-15T13:59:00.000Z","4.9.29","5.4",[20,111,22,112,113],"meta","repeater","theme-options","https:\u002F\u002Fwww.ultimate-fields.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fultimate-fields.3.0.2.zip",{"slug":117,"name":118,"version":119,"author":120,"author_profile":121,"description":122,"short_description":123,"active_installs":124,"downloaded":125,"rating":126,"num_ratings":127,"last_updated":128,"tested_up_to":129,"requires_at_least":130,"requires_php":17,"tags":131,"homepage":134,"download_link":135,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"custom-metadata","Custom Metadata Manager","0.7.1","Mohammad Jangda","https:\u002F\u002Fprofiles.wordpress.org\u002Fbatmoo\u002F","\u003Cp>An easy way to add custom fields to your object types (post, pages, custom post types, users) & to generate option pages.\u003C\u002Fp>\n\u003Cp>The goal of this plugin is to help you rapidly build familiar, intuitive interfaces for your users in a very WordPress-native way.\u003C\u002Fp>\n\u003Cp>The custom field panel is nice, but not quite the easiest thing for users to work with. Adding your own metaboxes and fields involves a lot of time and repetitive code that could be better used elsewhere.\u003C\u002Fp>\n\u003Cp>This plugin handles all that heavy-lifting for you behind-the-scenes, so that you can focus on more on building out and connecting your data rather than all the minor details. This single piece of code \u003Ccode>x_add_metadata_field( 'my-field-name', 'post' );\u003C\u002Fcode> generates a metabox with a text field inside it, with the necessary hooks to save the entered values.\u003C\u002Fp>\n\u003Cp>The API is similar to that used for registering custom post types and taxonomies so it should be familiar territory.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>NOTE\u003C\u002Fstrong>: The plugin now requires WordPress 3.3+ (chiefly for the wysiwyg & datepicker fields)\u003C\u002Fp>\n\u003Cp>Like what you see? Want more field types and features added? \u003Ca href=\"mailto:tech@stresslimitdesign.com\" rel=\"nofollow ugc\">Get in touch\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjkudish\u002Fcustom-metadata\" rel=\"nofollow ugc\">contribute on github\u003C\u002Fa>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cem>See “Other Notes” section for usage information\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch4>Object Types\u003C\u002Fh4>\n\u003Cp>The main idea behind this plugin is to have a single API to work with regardless of the object type. Currently, Custom Metadata Manager works with \u003Ccode>user\u003C\u002Fcode>, \u003Ccode>comment\u003C\u002Fcode> and any built-in or custom post types, e.g. \u003Ccode>post\u003C\u002Fcode>, \u003Ccode>page\u003C\u002Fcode>, etc.\u003C\u002Fp>\n\u003Ch4>Registering your fields\u003C\u002Fh4>\n\u003Cp>For the sake of performance (and to avoid potential race conditions), always register your custom fields in the \u003Ccode>admin_menu\u003C\u002Fcode> hook. This way your front-end doesn’t get bogged down with unnecessary processing and you can be sure that your fields will be registered safely. Here’s a code sample:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_action( 'admin_menu', 'my_theme_init_custom_fields' );\n\nfunction my_theme_init_custom_fields() {\n    if( function_exists( 'x_add_metadata_field' ) && function_exists( 'x_add_metadata_group' ) ) {\n        x_add_metadata_field( 'my_field', array( 'user', 'post' ) );\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Getting the data\u003C\u002Fh4>\n\u003Cp>You can get the data as you normally would using the \u003Ccode>get_metadata\u003C\u002Fcode> function. Custom Metadata manager stores all data using the WordPress metadata APIs using the slug name you provide. That way, even if you decide to deactivate this wonderful plugin, your data is safe and accessible. For options, you can use \u003Ccode>get_option\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$value = get_metadata( 'post', get_the_ID(), 'featured', true ); \u002F\u002F Returns post metadata value for the field 'featured'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Adding Metadata Groups\u003C\u002Fh4>\n\u003Cp>A group is essentially a metabox that groups together multiple fields. Register the group before any fields\u003C\u002Fp>\n\u003Cpre>\u003Ccode>x_add_metadata_group( $slug, $object_types, $args );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Parameters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$slug\u003C\u002Fcode> (string) The key under which the metadata will be stored.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$object_types\u003C\u002Fcode> (string|array) The object types to which this field should be added. Supported: post, page, any custom post type, user, comment.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Options and Overrides\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$args = array(\n    'label' => $group_slug, \u002F\u002F Label for the group\n    'context' => 'normal', \u002F\u002F (post only)\n    'priority' => 'default', \u002F\u002F (post only)\n    'autosave' => false, \u002F\u002F (post only) Should the group be saved in autosave? NOT IMPLEMENTED YET!\n    'exclude' => '', \u002F\u002F see below for details\n    'include' => '', \u002F\u002F see below for details\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Adding Metadata Fields\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>x_add_metadata_field( $slug, $object_types, $args );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Parameters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$slug\u003C\u002Fcode> (string) The key under which the metadata will be stored. For post_types, prefix the slug with an underscore (e.g. \u003Ccode>_hidden\u003C\u002Fcode>) to hide it from the the Custom Fields box.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$object_types\u003C\u002Fcode> (string|array) The object types to which this field should be added. Supported: post, page, any custom post type, user, comment.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Options and Overrides\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$args = array(\n    'group' => '', \u002F\u002F The slug of group the field should be added to. This needs to be registered with x_add_metadata_group first.\n    'field_type' => 'text', \u002F\u002F The type of field; 'text', 'textarea', 'password', 'checkbox', 'radio', 'select', 'upload', 'wysiwyg', 'datepicker', 'taxonomy_select', 'taxonomy_radio'\n    'label' => '', \u002F\u002F Label for the field\n    'description' => '', \u002F\u002F Description of the field, displayed below the input\n    'values' => array(), \u002F\u002F Values for select and radio buttons. Associative array\n    'display_callback' => '', \u002F\u002F Callback to custom render the field\n    'sanitize_callback' => '', \u002F\u002F Callback to sanitize data before it's saved\n    'display_column' => false, \u002F\u002F Add the field to the columns when viewing all posts\n    'display_column_callback' => '', \u002F\u002F Callback to render output for the custom column\n    'required_cap' => '', \u002F\u002F The cap required to view and edit the field\n    'exclude' => '', \u002F\u002F see below for details\n    'include' => '', \u002F\u002F see below for details\n    'multiple' => false, \u002F\u002F true or false, can the field be duplicated with a click of a button?\n    'readonly' => false, \u002F\u002F makes the field be readonly (works with text, textarea, password, upload and datepicker fields)\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Include \u002F Exclude\u003C\u002Fh4>\n\u003Cp>You can exclude fields and groups from specific object. For example, with the following, field-1 will show up for all posts except post #123:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$args = array(\n    'exclude' => 123\n);\nx_add_metadata_field( 'field-1', 'post', $args );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Alternatively, you can limit (“include”) fields and groups to specific objects. The following will ”only” show group-1 to post #456:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$args = array(\n    'include' => 123\n);\nx_add_metadata_group( 'group-1', 'post', $args );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can pass in an array of IDs:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$args = array(\n    'include' => array( 123, 456, 789 );\n);\n\nWith multiple object types, you can pass in an associative array:\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>$args = array(\u003Cbr \u002F>\n    ‘exclude’ => array(\u003Cbr \u002F>\n        ‘post’ => 123,\u003Cbr \u002F>\n        ‘user’ => array( 123, 456, 789 )\u003Cbr \u002F>\n    )\u003Cbr \u002F>\n);\u003C\u002Fp>\n\u003Ch4>Examples\u003C\u002Fh4>\n\u003Cp>For examples, please see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjkudish\u002Fcustom-metadata\u002Fblob\u002Fmaster\u002Fcustom_metadata_examples.php\" rel=\"nofollow ugc\">custom_metadata_examples.php\u003C\u002Fa> file included with the plugin. Add a constant to your wp-config.php called \u003Ccode>CUSTOM_METADATA_MANAGER_DEBUG\u003C\u002Fcode> with a value of \u003Ccode>true\u003C\u002Fcode> to see it in action:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define( 'CUSTOM_METADATA_MANAGER_DEBUG', true );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>TODOs\u003C\u002Fh4>\n\u003Cp>Stuff we have planned for the future:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Ability to clone (multiple) groups of fields\u003C\u002Fli>\n\u003Cli>Ability Pass in attributes for built-in fields (e.g. class, data-*, etc.)\u003C\u002Fli>\n\u003Cli>Additional field types (multi-select, multi-checkbox)\u003C\u002Fli>\n\u003Cli>Limit or exclude groups and fields using a custom callback\u003C\u002Fli>\n\u003Cli>Autosave support for fields on post types\u003C\u002Fli>\n\u003Cli>Client- and server-side validation support\u003C\u002Fli>\n\u003Cli>Add groups and fields to Quick Edit\u003C\u002Fli>\n\u003C\u002Ful>\n","An easy way to add custom fields to your object types (post, pages, custom post types, users)",800,16586,88,5,"2012-07-11T19:02:00.000Z","3.4.2","3.3",[117,132,22,23,133],"custom-metadata-manager-metadata","user-meta","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fcustom-metadata\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-metadata.0.7.1.zip",{"attackSurface":137,"codeSignals":165,"taintFlows":203,"riskAssessment":222,"analyzedAt":232},{"hooks":138,"ajaxHandlers":153,"restRoutes":162,"shortcodes":163,"cronEvents":164,"entryPointCount":13,"unprotectedCount":27},[139,145,149],{"type":140,"name":141,"callback":142,"file":143,"line":144},"action","plugins_loaded","textdomain","post-meta-manager.php",57,{"type":140,"name":146,"callback":147,"file":143,"line":148},"admin_menu","menu_settings",58,{"type":140,"name":150,"callback":151,"priority":51,"file":143,"line":152},"admin_enqueue_scripts","scripts_styles",59,[154,159],{"action":155,"nopriv":156,"callback":155,"hasNonce":157,"hasCapCheck":156,"file":143,"line":158},"key_change",false,true,60,{"action":160,"nopriv":156,"callback":160,"hasNonce":157,"hasCapCheck":156,"file":143,"line":161},"key_delete",61,[],[],[],{"dangerousFunctions":166,"sqlUsage":167,"outputEscaping":175,"fileOperations":27,"externalRequests":27,"nonceChecks":13,"capabilityChecks":27,"bundledLibraries":202},[],{"prepared":168,"raw":13,"locations":169},4,[170,173],{"file":143,"line":171,"context":172},433,"$wpdb->get_var() with variable interpolation",{"file":143,"line":174,"context":172},473,{"escaped":71,"rawEcho":71,"locations":176},[177,180,182,184,186,188,190,192,194,196,198,200],{"file":143,"line":178,"context":179},157,"raw output",{"file":143,"line":181,"context":179},166,{"file":143,"line":183,"context":179},175,{"file":143,"line":185,"context":179},187,{"file":143,"line":187,"context":179},197,{"file":143,"line":189,"context":179},231,{"file":143,"line":191,"context":179},243,{"file":143,"line":193,"context":179},252,{"file":143,"line":195,"context":179},296,{"file":143,"line":197,"context":179},318,{"file":143,"line":199,"context":179},373,{"file":143,"line":201,"context":179},395,[],[204],{"entryPoint":205,"graph":206,"unsanitizedCount":27,"severity":221},"\u003Cpost-meta-manager> (post-meta-manager.php:0)",{"nodes":207,"edges":219},[208,213],{"id":209,"type":210,"label":211,"file":143,"line":212},"n0","source","$_POST (x2)",143,{"id":214,"type":215,"label":216,"file":143,"line":217,"wp_function":218},"n1","sink","query() [SQLi]",445,"query",[220],{"from":209,"to":214,"sanitized":157},"low",{"summary":223,"deductions":224},"The plugin \"post-meta-manager\" v1.0.4 exhibits a generally good security posture based on the provided static analysis. It has a small attack surface consisting solely of two AJAX handlers, both of which appear to have authentication checks based on the 'Unprotected: 0' figure.  The absence of REST API routes, shortcodes, and cron events further limits potential entry points.  Crucially, the taint analysis found no critical or high severity flows, and there are no known CVEs associated with this plugin, indicating a history of responsible development and maintenance. The presence of nonce checks and a moderate percentage of SQL queries using prepared statements are positive indicators. \n\nHowever, there are areas for improvement.  The fact that none of the AJAX handlers or REST API routes have capability checks (indicated by 'Capability checks: 0') is a significant concern. While nonce checks can prevent basic CSRF attacks, they do not verify if the user performing the action has the necessary permissions.  Additionally, 50% of output escaping is not ideal; unescaped output can lead to Cross-Site Scripting (XSS) vulnerabilities. The presence of SQL queries without prepared statements, even if a minority, also presents a risk of SQL injection. \n\nIn conclusion, \"post-meta-manager\" v1.0.4 demonstrates a solid foundation with a small attack surface and no known vulnerabilities. The primary weaknesses lie in the lack of capability checks on its entry points and the partial implementation of output escaping. Addressing these would significantly enhance the plugin's security.",[225,227,229],{"reason":226,"points":51},"AJAX handlers missing capability checks",{"reason":228,"points":127},"50% of outputs not properly escaped",{"reason":230,"points":231},"SQL queries without prepared statements (non-critical)",3,"2026-03-16T21:13:28.857Z",{"wat":234,"direct":243},{"assetPaths":235,"generatorPatterns":238,"scriptPaths":239,"versionParams":240},[236,237],"\u002Fwp-content\u002Fplugins\u002Fpost-meta-manager\u002Flib\u002Fcss\u002Fpmm.admin.min.css","\u002Fwp-content\u002Fplugins\u002Fpost-meta-manager\u002Flib\u002Fjs\u002Fpmm.ajax.min.js",[],[237],[241,242],"post-meta-manager\u002Flib\u002Fcss\u002Fpmm.admin.min.css?ver=","post-meta-manager\u002Flib\u002Fjs\u002Fpmm.ajax.min.js?ver=",{"cssClasses":244,"htmlComments":245,"htmlAttributes":246,"restEndpoints":247,"jsGlobals":248,"shortcodeOutput":250},[],[],[],[],[249],"pmmAjaxData",[],{"error":157,"url":252,"statusCode":253,"statusMessage":254,"message":254},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fpost-meta-manager\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":168,"versions":256},[257,262,269,276],{"version":6,"download_url":25,"svn_tag_url":258,"released_at":28,"has_diff":156,"diff_files_changed":259,"diff_lines":28,"trac_diff_url":260,"vulnerabilities":261,"is_current":157},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpost-meta-manager\u002Ftags\u002F1.0.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fpost-meta-manager%2Ftags%2F1.0.3&new_path=%2Fpost-meta-manager%2Ftags%2F1.0.4",[],{"version":263,"download_url":264,"svn_tag_url":265,"released_at":28,"has_diff":156,"diff_files_changed":266,"diff_lines":28,"trac_diff_url":267,"vulnerabilities":268,"is_current":156},"1.0.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-meta-manager.1.0.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpost-meta-manager\u002Ftags\u002F1.0.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fpost-meta-manager%2Ftags%2F1.0.1&new_path=%2Fpost-meta-manager%2Ftags%2F1.0.3",[],{"version":270,"download_url":271,"svn_tag_url":272,"released_at":28,"has_diff":156,"diff_files_changed":273,"diff_lines":28,"trac_diff_url":274,"vulnerabilities":275,"is_current":156},"1.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-meta-manager.1.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpost-meta-manager\u002Ftags\u002F1.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fpost-meta-manager%2Ftags%2F1.0&new_path=%2Fpost-meta-manager%2Ftags%2F1.0.1",[],{"version":277,"download_url":278,"svn_tag_url":279,"released_at":28,"has_diff":156,"diff_files_changed":280,"diff_lines":28,"trac_diff_url":28,"vulnerabilities":281,"is_current":156},"1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-meta-manager.1.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpost-meta-manager\u002Ftags\u002F1.0\u002F",[],[]]