[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fVt580wwVbVlcZZgQza4bYrHP1GmAuLaBMlEXmPtK638":3},{"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":11,"unpatched_count":11,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":38,"analysis":132,"fingerprints":414},"meta-optimizer","Meta Optimizer","1.4","Parsa","https:\u002F\u002Fprofiles.wordpress.org\u002Fparselearn\u002F","\u003Cp>This plugin optimizes WordPress meta data storage by saving all meta data for each post, comment, user, or term in a single row with separate columns for each meta key. This reduces the number of rows and improves the query performance and data export. The plugin works seamlessly with WordPress core functions and hooks, and supports any plugins that use them. Some of the features of this plugin are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Custom database tables for each type of meta data (post, comment, user, term)\u003C\u002Fli>\n\u003Cli>Compatibility with WordPress queries\u003C\u002Fli>\n\u003Cli>Faster queries and easy data export\u003C\u002Fli>\n\u003Cli>Data migration from default WordPress meta tables\u003C\u002Fli>\n\u003Cli>Option to exclude specific fields from core meta tables\u003C\u002Fli>\n\u003Cli>Support for popular plugins and themes such as Advanced Custom Fields, Meta Box, CMB2, and more.\u003C\u002Fli>\n\u003C\u002Ful>\n","Meta Optimizer is a WordPress plugin that helps you speed up your website by using meta data. It lets you optimize the meta tables for your posts, com &hellip;",0,1697,100,2,"2023-09-12T11:59:00.000Z","6.3.8","5.0","7.3",[20,21,22,23,24],"comment-meta","meta","post-meta","term-meta","user-meta","https:\u002F\u002Fparsakafi.github.io\u002Fwp-meta-optimizer","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmeta-optimizer.1.4.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":27,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"parselearn",4,120,30,84,"2026-04-04T14:10:01.820Z",[39,60,80,98,115],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":13,"downloaded":47,"rating":11,"num_ratings":11,"last_updated":48,"tested_up_to":49,"requires_at_least":50,"requires_php":51,"tags":52,"homepage":58,"download_link":59,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":28,"fetched_at":29},"puredevs-any-meta-inspector","PureDevs Any Meta Inspector","1.0.2","PureDevs","https:\u002F\u002Fprofiles.wordpress.org\u002Fpuredevs\u002F","\u003Cp>Have you ever wanted to inspect the metadata associated with a post?\u003Cbr \u002F>\nPureDevs Any Meta Inspector is a free, lightweight plugin that allows you to —\u003Cbr \u002F>\nInspect meta keys of posts, pages, custom post type posts, custom taxonomy terms, users and comments\u003Cbr \u002F>\nInspect unserialized values of posts, pages, custom post type posts, custom taxonomy terms, users and comments\u003C\u002Fp>\n","PureDevs Any Meta Inspector shows all the meta keys and their unserialized values in a metabox for posts, pages, terms, comments, and users.",2597,"2026-02-18T07:04:00.000Z","6.9.4","3.5","",[53,54,55,56,57],"category-metadata","comment-metadata","metadata","post-metadata","user-metadata","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpuredevs-any-meta-inspector","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpuredevs-any-meta-inspector.1.0.2.zip",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":68,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":51,"tags":75,"homepage":78,"download_link":79,"security_score":27,"vuln_count":11,"unpatched_count":11,"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,16509,88,5,"2012-07-11T19:02:00.000Z","3.4.2","3.3",[61,76,22,77,24],"custom-metadata-manager-metadata","postmeta","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fcustom-metadata\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-metadata.0.7.1.zip",{"slug":81,"name":82,"version":83,"author":84,"author_profile":85,"description":86,"short_description":87,"active_installs":88,"downloaded":89,"rating":13,"num_ratings":14,"last_updated":90,"tested_up_to":49,"requires_at_least":91,"requires_php":92,"tags":93,"homepage":96,"download_link":97,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":28,"fetched_at":29},"metadata-viewer","Metadata Viewer","2.1.1","PluginizeLab","https:\u002F\u002Fprofiles.wordpress.org\u002Fpluginizelab\u002F","\u003Cp>The Metadata Viewer plugin displays post, user (ie. posts, pages, and custom post types, user, WooCommerce products & orders) meta keys and their values at the bottom of the post & user editing page. There is also integrated realtime search feature.\u003Cbr \u002F>\nJust install a single plugin to solve multiple purpose like to show posts, pages, custom post types & user meta.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Posts Metadata Viewer\u003C\u002Fli>\n\u003Cli>Custom Post Types Metadata Viewer\u003C\u002Fli>\n\u003Cli>Pages Metadata Viewer\u003C\u002Fli>\n\u003Cli>Users Metadata Viewer\u003C\u002Fli>\n\u003Cli>WooCommerce Products Metadata Viewer\u003C\u002Fli>\n\u003Cli>WooCommerce Orders Metadata Viewer\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Up-Comming Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Comment Metadata Viewer\u003C\u002Fli>\n\u003Cli>Term Metadata Viewer\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>If you find this plugin useful, consider supporting its development through a \u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002Faiarnob\" rel=\"nofollow ugc\">donation\u003C\u002Fa>.\u003C\u002Fp>\n","A plugin or theme developer can view metadata by this plugin easily.",300,2682,"2025-12-24T10:56:00.000Z","6.0.0","7.4",[94,95,55,22,24],"custom-post-type-meta","meta-viewer","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmetadata-viewer","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmetadata-viewer.2.1.1.zip",{"slug":99,"name":100,"version":42,"author":101,"author_profile":102,"description":103,"short_description":104,"active_installs":105,"downloaded":106,"rating":13,"num_ratings":107,"last_updated":108,"tested_up_to":109,"requires_at_least":50,"requires_php":51,"tags":110,"homepage":113,"download_link":114,"security_score":27,"vuln_count":11,"unpatched_count":11,"last_vuln_date":28,"fetched_at":29},"cleanup-duplicate-meta","Cleanup Duplicate Meta","Tonya Mork","https:\u002F\u002Fprofiles.wordpress.org\u002Fhellofromtonya\u002F","\u003Cp>There are times when your database gets filled up with duplicate entries that you may not want.  Cleanup Duplicate Meta allows you to check for any duplicates in either the Post Meta or User Meta tables.  Then if you want to get rid of them, simply click on the Cleanup button and Cleanup Duplicate Meta deletes the duplicates leaving either the first or last meta (you select which).\u003C\u002Fp>\n\u003Cp>The interface is simple and easy to use:\u003C\u002Fp>\n\u003Col>\n\u003Cli>‘Check for Duplicates’ queries the database and then displays all the duplicates found.\u003C\u002Fli>\n\u003Cli>‘Count Duplicates’ counts all the duplicates found in the database (i.e. a total count).\u003C\u002Fli>\n\u003Cli>The ‘Cleanup’ buttons trigger a SQL query to run, which deletes each of the duplicate entries, leaving either the first or last one (per your selection) in the database.  All non-duplicates remain untouched by the plugin.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>See the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fcleanup-duplicate-meta\u002Fscreenshots\u002F\" rel=\"ugc\">screenshots tab\u003C\u002Fa> for more details.\u003C\u002Fp>\n","Cleanup Duplicate Meta gives you a tool to check for and delete duplicate Post and\u002For User Meta entries in the database tables.",200,9629,11,"2015-05-09T11:17:00.000Z","4.2.39",[111,112,21,22,24],"database-cleanup","duplicate-meta","http:\u002F\u002Fwpdevelopersclub.com\u002Fwordpress-plugins\u002Fcleanup-duplicate-meta\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcleanup-duplicate-meta.1.0.2.zip",{"slug":116,"name":117,"version":118,"author":119,"author_profile":120,"description":121,"short_description":122,"active_installs":105,"downloaded":123,"rating":124,"num_ratings":14,"last_updated":125,"tested_up_to":126,"requires_at_least":17,"requires_php":51,"tags":127,"homepage":130,"download_link":131,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":28,"fetched_at":29},"metabase-post-user-meta-editor","Metabase – Post & User Meta Editor","0.8.1","David Towoju","https:\u002F\u002Fprofiles.wordpress.org\u002Fdavexpression\u002F","\u003Cp>This plugin shows the post meta and user meta of your website. Post meta of custom post types can also be viewed. Only admins can view this meta data.\u003C\u002Fp>\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\u002FT0EXphFEcqo?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>Post Meta\u003C\u002Fh3>\n\u003Cp>All user meta data can be viewed with this plugin (Metabase) – including custom post types. Both public and private meta keys can be viewed. Private meta keys start with the underscore prefix and are not meant to be seen in the admin.\u003C\u002Fp>\n\u003Cp>In short, any data that can be viewed with \u003Ccode>get_post_meta()\u003C\u002Fcode> can be viewed with this plugin.\u003C\u002Fp>\n\u003Cp>To view your post meta, please go to the open the post in the WP Admin and scroll down to end of the page, you will see a table titled “Meta”.\u003C\u002Fp>\n\u003Ch3>User Meta\u003C\u002Fh3>\n\u003Cp>All user meta data can be viewed\u002Fmanaged with this plugin (Metabase). Also, private and public meta keys can be viewed. Any data that can be viewed with \u003Ccode>get_user_meta()\u003C\u002Fcode> can be viewed with this plugin.\u003C\u002Fp>\n\u003Cp>To view your plugin, please got to the Users page and click to view a user. Scroll down and you will see the\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Free\u003C\u002Fli>\n\u003Cli>Stand-alone, no need to install any other plugin for this to work\u003C\u002Fli>\n\u003Cli>Delete meta data\u003C\u002Fli>\n\u003Cli>View private meta data\u003C\u002Fli>\n\u003Cli>Edit and change the values of your meta data\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Getting Started\u003C\u002Fh3>\n\u003Cp>After installing this plugin, a metabox will be added to your posts and users.\u003C\u002Fp>\n\u003Cp>You can filter the post types you want the metabox to appear in.\u003C\u002Fp>\n","Manage post meta, custom post type meta and user meta of your WordPress site.",4026,80,"2025-04-04T06:12:00.000Z","6.5.8",[21,22,128,129,24],"show-post-meta","show-user-meta","https:\u002F\u002Fpluginette.com\u002Fproduct\u002Fmetabase\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmetabase-post-user-meta-editor.0.8.1.zip",{"attackSurface":133,"codeSignals":243,"taintFlows":367,"riskAssessment":405,"analyzedAt":413},{"hooks":134,"ajaxHandlers":219,"restRoutes":238,"shortcodes":239,"cronEvents":240,"entryPointCount":33,"unprotectedCount":11},[135,141,145,149,153,158,162,166,170,175,181,186,189,193,196,201,205,208,212,215],{"type":136,"name":137,"callback":138,"file":139,"line":140},"action","deleted_post","deletePostMetas","inc\\Actions.php",21,{"type":136,"name":142,"callback":143,"file":139,"line":144},"deleted_comment","deleteCommentMetas",22,{"type":136,"name":146,"callback":147,"file":139,"line":148},"deleted_user","deleteUserMetas",23,{"type":136,"name":150,"callback":151,"file":139,"line":152},"delete_term","deleteTermMetas",24,{"type":154,"name":155,"callback":156,"file":139,"line":157},"filter","cron_schedules","addIntervalToCron",26,{"type":136,"name":159,"callback":160,"file":139,"line":161},"init","initScheduler",27,{"type":136,"name":163,"callback":164,"file":139,"line":165},"import_metas_wpmo","importMetas",28,{"type":136,"name":167,"callback":168,"file":139,"line":169},"admin_enqueue_scripts","enqueueScripts",29,{"type":154,"name":171,"callback":172,"priority":173,"file":174,"line":144},"comments_clauses","changeCommentsClauses",9999,"inc\\CommentQueries.php",{"type":154,"name":176,"callback":177,"priority":178,"file":179,"line":180},"acf\u002Fpre_load_metadata","acfGetMeta",10,"inc\\Integration.php",12,{"type":136,"name":182,"callback":183,"file":184,"line":185},"admin_menu","adminMenu","inc\\Options.php",14,{"type":136,"name":159,"callback":187,"file":184,"line":188},"defineWords",15,{"type":154,"name":190,"callback":191,"priority":173,"file":192,"line":140},"posts_groupby","changePostsGroupBy","inc\\PostQueries.php",{"type":154,"name":194,"callback":195,"priority":173,"file":192,"line":144},"posts_orderby","changePostsOrderBy",{"type":154,"name":197,"callback":198,"priority":173,"file":199,"line":200},"get_meta_sql","changeMetaSQL","inc\\Queries.php",35,{"type":136,"name":202,"callback":203,"priority":173,"file":204,"line":144},"pre_get_terms","changeTermQuery","inc\\TermQueries.php",{"type":154,"name":206,"callback":207,"priority":173,"file":204,"line":148},"terms_clauses","changeTermsClauses",{"type":154,"name":209,"callback":210,"file":211,"line":107},"wp_dashboard_setup","disableQuickDraftDashboardWidget","inc\\Tools.php",{"type":154,"name":213,"callback":214,"file":211,"line":180},"wp_revisions_to_keep","disableRevisions",{"type":136,"name":216,"callback":217,"priority":173,"file":218,"line":144},"pre_user_query","changeUserQuery","inc\\UserQueries.php",[220,226,230,234],{"action":221,"nopriv":222,"callback":223,"hasNonce":224,"hasCapCheck":224,"file":139,"line":225},"wpmo_delete_table_column",false,"deleteTableColumn",true,16,{"action":227,"nopriv":222,"callback":228,"hasNonce":224,"hasCapCheck":224,"file":139,"line":229},"wpmo_rename_table_column","renameTableColumn",17,{"action":231,"nopriv":222,"callback":232,"hasNonce":224,"hasCapCheck":224,"file":139,"line":233},"wpmo_add_remove_black_list","addRemoveBlackList",18,{"action":235,"nopriv":222,"callback":236,"hasNonce":224,"hasCapCheck":224,"file":139,"line":237},"wpmo_change_table_index","changeTableIndex",19,[],[],[241],{"hook":163,"callback":163,"file":139,"line":242},302,{"dangerousFunctions":244,"sqlUsage":245,"outputEscaping":293,"fileOperations":11,"externalRequests":11,"nonceChecks":365,"capabilityChecks":33,"bundledLibraries":366},[],{"prepared":246,"raw":140,"locations":247},32,[248,251,254,257,259,261,264,266,268,270,272,274,276,278,279,281,283,285,287,289,291],{"file":139,"line":249,"context":250},141,"$wpdb->get_var() with variable interpolation",{"file":139,"line":252,"context":253},176,"$wpdb->query() with variable interpolation",{"file":255,"line":144,"context":256},"inc\\DBIndexes.php","$wpdb->get_results() with variable interpolation",{"file":255,"line":258,"context":253},52,{"file":255,"line":260,"context":253},76,{"file":262,"line":263,"context":253},"inc\\Helpers.php",212,{"file":262,"line":265,"context":250},244,{"file":262,"line":267,"context":256},355,{"file":262,"line":269,"context":256},427,{"file":262,"line":271,"context":250},497,{"file":262,"line":273,"context":250},503,{"file":275,"line":35,"context":250},"inc\\Install.php",{"file":277,"line":165,"context":250},"inc\\Optimize.php",{"file":277,"line":258,"context":253},{"file":277,"line":280,"context":250},58,{"file":277,"line":282,"context":250},64,{"file":277,"line":284,"context":250},91,{"file":277,"line":286,"context":256},117,{"file":277,"line":288,"context":250},178,{"file":277,"line":290,"context":256},189,{"file":277,"line":292,"context":253},192,{"escaped":294,"rawEcho":295,"locations":296},104,34,[297,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,363],{"file":184,"line":298,"context":299},229,"raw output",{"file":184,"line":301,"context":299},233,{"file":184,"line":303,"context":299},246,{"file":184,"line":305,"context":299},273,{"file":184,"line":307,"context":299},275,{"file":184,"line":309,"context":299},278,{"file":184,"line":311,"context":299},279,{"file":184,"line":313,"context":299},281,{"file":184,"line":315,"context":299},287,{"file":184,"line":317,"context":299},288,{"file":184,"line":319,"context":299},299,{"file":184,"line":321,"context":299},330,{"file":184,"line":323,"context":299},434,{"file":184,"line":325,"context":299},541,{"file":184,"line":327,"context":299},550,{"file":184,"line":329,"context":299},577,{"file":184,"line":331,"context":299},579,{"file":184,"line":333,"context":299},583,{"file":184,"line":335,"context":299},584,{"file":184,"line":337,"context":299},588,{"file":184,"line":339,"context":299},600,{"file":184,"line":341,"context":299},692,{"file":184,"line":343,"context":299},846,{"file":184,"line":345,"context":299},847,{"file":184,"line":347,"context":299},848,{"file":184,"line":349,"context":299},849,{"file":184,"line":351,"context":299},850,{"file":184,"line":353,"context":299},851,{"file":184,"line":355,"context":299},854,{"file":184,"line":357,"context":299},857,{"file":184,"line":359,"context":299},860,{"file":184,"line":361,"context":299},863,{"file":184,"line":361,"context":299},{"file":184,"line":364,"context":299},872,7,[],[368,394],{"entryPoint":369,"graph":370,"unsanitizedCount":11,"severity":393},"renameTableColumn (inc\\Actions.php:111)",{"nodes":371,"edges":390},[372,377,383,385],{"id":373,"type":374,"label":375,"file":139,"line":376},"n0","source","$_POST",116,{"id":378,"type":379,"label":380,"file":139,"line":381,"wp_function":382},"n1","sink","get_var() [SQLi]",122,"get_var",{"id":384,"type":374,"label":375,"file":139,"line":376},"n2",{"id":386,"type":379,"label":387,"file":139,"line":388,"wp_function":389},"n3","query() [SQLi]",127,"query",[391,392],{"from":373,"to":378,"sanitized":224},{"from":384,"to":386,"sanitized":224},"low",{"entryPoint":395,"graph":396,"unsanitizedCount":11,"severity":393},"\u003CActions> (inc\\Actions.php:0)",{"nodes":397,"edges":402},[398,399,400,401],{"id":373,"type":374,"label":375,"file":139,"line":376},{"id":378,"type":379,"label":380,"file":139,"line":381,"wp_function":382},{"id":384,"type":374,"label":375,"file":139,"line":376},{"id":386,"type":379,"label":387,"file":139,"line":388,"wp_function":389},[403,404],{"from":373,"to":378,"sanitized":224},{"from":384,"to":386,"sanitized":224},{"summary":406,"deductions":407},"The \"meta-optimizer\" plugin version 1.4 presents a generally good security posture based on the provided static analysis and vulnerability history. The absence of known CVEs and the plugin's reliance on prepared statements for SQL queries (60%) and proper output escaping (75%) are positive indicators.  Furthermore, the identified entry points (4 AJAX handlers) are all protected by authentication checks, and there are no exposed REST API routes or shortcodes without permission callbacks. The plugin also demonstrates good security practices by implementing nonce checks (7) and capability checks (4), and it does not appear to perform file operations or external HTTP requests, reducing common attack vectors.\n\nHowever, there are a few areas that warrant attention. While 60% of SQL queries use prepared statements, this leaves 40% that do not, which could potentially be vulnerable to SQL injection if not handled carefully within the context of the application. Similarly, 25% of output escaping is not properly handled, which could lead to Cross-Site Scripting (XSS) vulnerabilities if user-supplied data is being outputted without sanitization. The taint analysis reported zero critical or high severity flows with unsanitized paths, which is excellent, but the low number of flows analyzed (2) means this might not be a comprehensive assessment.\n\nOverall, the plugin shows a commitment to security, with no known past vulnerabilities. The strengths lie in its protected entry points, use of prepared statements, and output escaping. The weaknesses, though not critical based on this snapshot, lie in the unstated but present percentage of raw SQL queries and unescaped output. A more thorough taint analysis might provide further confidence.",[408,410],{"reason":409,"points":178},"SQL queries not using prepared statements",{"reason":411,"points":412},"Output not properly escaped",6,"2026-03-17T07:04:04.232Z",{"wat":415,"direct":424},{"assetPaths":416,"generatorPatterns":419,"scriptPaths":420,"versionParams":421},[417,418],"\u002Fwp-content\u002Fplugins\u002Fmeta-optimizer\u002Fassets\u002Fcss\u002Fbackend.css","\u002Fwp-content\u002Fplugins\u002Fmeta-optimizer\u002Fassets\u002Fjs\u002Fbackend.js",[],[418],[422,423],"meta-optimizer\u002Fassets\u002Fcss\u002Fbackend.css?ver=","meta-optimizer\u002Fassets\u002Fjs\u002Fbackend.js?ver=",{"cssClasses":425,"htmlComments":426,"htmlAttributes":427,"restEndpoints":428,"jsGlobals":429,"shortcodeOutput":430},[],[],[],[],[],[]]