[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fUpv7cHunppOatQmeDz-7VnAHyH7oZU9tSI-ZI2cNGwk":3,"$fIVM4UIeJz85l8QaPJS8hGcZoPyne-d198dm3Dwib1P0":229,"$ftn7jmhnn90HiqT4cCi35Jiti7QNXLfknoe8HISLeh5U":234},{"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":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":20,"download_link":21,"security_score":22,"vuln_count":11,"unpatched_count":11,"last_vuln_date":23,"fetched_at":24,"discovery_status":25,"vulnerabilities":26,"developer":27,"crawl_stats":23,"alternatives":34,"analysis":151,"fingerprints":205},"display-post-reading-time","Display Post Reading Time – Show Estimated Post Reading Time & Progress Bar","0.1","WPFraternity","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpfraternity\u002F","\u003Cp>Post Reading Time calculate the time it would take to the user to read an article, including watching the images, and display the value in the post.\u003C\u002Fp>\n","Post Reading Time calculate the time it would take to the user to read an article, including watching the images, and display the value in the post.",0,645,"2023-11-13T17:46:00.000Z","6.4.8","4.9","5.6",[18,19],"meter","reading","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdisplay-post-reading-time.zip",85,null,"2026-04-06T09:54:40.288Z","no_bundle",[],{"slug":28,"display_name":7,"profile_url":8,"plugin_count":29,"total_installs":30,"avg_security_score":22,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},"wpfraternity",2,1000,30,84,"2026-05-19T20:31:37.303Z",[35,60,84,106,127],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":45,"num_ratings":46,"last_updated":47,"tested_up_to":48,"requires_at_least":49,"requires_php":20,"tags":50,"homepage":56,"download_link":57,"security_score":58,"vuln_count":11,"unpatched_count":11,"last_vuln_date":23,"fetched_at":59},"reading-time-wp","Reading Time WP","2.0.17","yingles","https:\u002F\u002Fprofiles.wordpress.org\u002Fyingles\u002F","\u003Cp>WP Reading Time let’s you easily add an estimated reading time to your WordPress posts. Activating the plugin will automatically add the reading time to the beginning of your post’s content. This can be deactivated in the Reading Time settings which can be accessed from your Dashboard’s Settings menu. You can also edit the label and postfix from this menu.\u003C\u002Fp>\n\u003Cp>If you’d prefer more control over where you add your reading time you can use the the [rt_reading_time] shortcode to insert the time into a post. This shortcode also excepts values for label and postfix. These are optional. Ex. [rt_reading_time label=”Reading Time:” postfix=”minutes” postfix_singular=”minute”].\u003C\u002Fp>\n","Reading Time WP creates an estimated reading time of your posts that is inserted above the content or by using a shortcode.",30000,427181,96,20,"2024-11-17T15:46:00.000Z","6.7.5","3.0.1",[51,52,53,54,55],"estimated-time","posts","reading-time","time","word-count","https:\u002F\u002Fjasonyingling.me\u002Freading-time-wp\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freading-time-wp.2.0.17.zip",92,"2026-04-16T10:56:18.058Z",{"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":20,"tags":75,"homepage":79,"download_link":80,"security_score":81,"vuln_count":82,"unpatched_count":11,"last_vuln_date":83,"fetched_at":59},"search-meter","Search Meter","2.14.1","bennettmcelwee","https:\u002F\u002Fprofiles.wordpress.org\u002Fbennettmcelwee\u002F","\u003Cp>If you have a Search box on your site, Search Meter automatically records what people are searching for — and whether they are finding what they are looking for. Search Meter’s admin interface shows you what people have been searching for in the last couple of days, and in the last week or month. It also shows you which searches have been unsuccessful. If people search your site and get no results, they’ll probably go elsewhere. With Search Meter, you’ll be able to find out what people are searching for, and give them what they want by creating new posts on those topics.\u003C\u002Fp>\n\u003Cp>You can also show your readers what the most popular searches are. Customize your theme and add the Popular Searches block, which displays a configurable list of recent popular successful search terms on your site, with each term hyperlinked to the actual search results. You can also add a Recent Searches block, which simply displays the most recent searches. Both blocks are also available as widgets for older WordPress installations. And if you want to edit your theme, both of these functions are also available as template tags.\u003C\u002Fp>\n\u003Cp>Search Meter installs easily and requires no configuration. Just install it, activate it, and it starts tracking your visitors’ searches.\u003C\u002Fp>\n\u003Ch4>View Statistics\u003C\u002Fh4>\n\u003Cp>To see your search statistics, Log in to WordPress Admin. On your dashboard you will see a Search Meter widget listing search statistics from the last seven days. For more details, go to the Dashboard menu on the left and click Search Meter. You’ll see the most popular searches in the last day, week and month. Click “Last 100 Searches” or “Last 500 Searches” to see lists of all recent searches. You can download the statistics as a file that you can open in Excel or a similar program.\u003C\u002Fp>\n\u003Ch4>Manage Statistics\u003C\u002Fh4>\n\u003Cp>There are a few options available if you go to the Settings section and click Search Meter. Use the radio buttons to determine who will be allowed to see the full search statistics. You can also type in a list of filter words; any search terms containing these words will not show up in the Recent Searches and Popular Searches blocks.\u003C\u002Fp>\n\u003Cp>\u003Cem>Advanced users\u003C\u002Fem>: You can check the “Ignore” box to tell Search Meter to ignore searches made by logged-in administrators, so you can test things without cluttering your search statistics. You can also check the “Keep detailed information” checkbox to make Search Meter save technical information about every search (the information is taken from the HTTP headers).\u003C\u002Fp>\n\u003Cp>Use the Reset Statistics button to clear all past search statistics; Search Meter will immediately start gathering fresh statistics.\u003C\u002Fp>\n","Search Meter tracks what your readers are searching for on your site. View full details of recent searches or stats for the last day, week or month.",20000,429566,86,29,"2025-12-03T00:06:00.000Z","6.9.4","3.2",[18,76,61,77,78],"search","statistics","widget","https:\u002F\u002Fthunderguy.com\u002Fsemicolon\u002Fwordpress\u002Fsearch-meter-wordpress-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsearch-meter.2.14.2.zip",98,1,"2020-03-11 00:00:00",{"slug":85,"name":86,"version":87,"author":88,"author_profile":89,"description":90,"short_description":91,"active_installs":92,"downloaded":93,"rating":94,"num_ratings":95,"last_updated":96,"tested_up_to":48,"requires_at_least":97,"requires_php":20,"tags":98,"homepage":103,"download_link":104,"security_score":58,"vuln_count":82,"unpatched_count":11,"last_vuln_date":105,"fetched_at":59},"url-params","URL Params","2.5","Jeremy B. Shapiro","https:\u002F\u002Fprofiles.wordpress.org\u002Fjeremyshapiro\u002F","\u003Cp>The URL Params WordPress Plugin allows you to access URL parameters in the Query String of the URL.\u003C\u002Fp>\n\u003Cp>The plugin even allows you to specify a default value in the shortcode if the parameter isn’t set, so if you want to say “Hello, FirstName” and FirstName isn’t set, it could say something like “Hello, Friend!”\u003C\u002Fp>\n\u003Cp>To specify a backup url parameter, enter multiple parameters seperated by commas. The plugin will check for each parameter, in order, until a matching one is found and return that. Failing finding any of the parameters you listed, the default will be returned. For example, you can specify \u003Ccode>[urlparam param=\"FirstName, First, name\" default=\"Friend\" \u002F]\u003C\u002Fcode> to check for FirstName, and if not found, then First, if not found, then name, and if not, then just return “Friend”.\u003C\u002Fp>\n\u003Cp>If the parameter is a date, you can also specify the \u003Ccode>dateformat\u003C\u002Fcode> option using a \u003Ca href=\"http:\u002F\u002Fphp.net\u002Fmanual\u002Fen\u002Ffunction.date.php\" rel=\"nofollow ugc\">PHP friendly date format\u003C\u002Fa>, for example \u003Ccode>[urlparam param=\"somedate\" dateformat=\"F Js\" \u002F]\u003C\u002Fcode>. Note that PHP only returns dates formatted in English regardless of locale settings.\u003C\u002Fp>\n\u003Cp>This is great if you have personalized links, like from Infusionsoft or Keap, as it lets you personalize a landing page with a persons name.\u003C\u002Fp>\n\u003Cp>You can also use this to pre-fill out form fields for folks based on the querystring. For example, if their first name is passed in the URL, your landing page can greet the viewer by name and pre-fill their name on a form.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>Use the shortcode urlparam with the optional parameter of “default”. For example \u003Ccode>[urlparam param=\"FirstName\" \u002F]\u003C\u002Fcode> or \u003Ccode>[urlparam param=\"FirstName\" default=\"Friend\"\u002F]\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>For conditional content use \u003Ccode>[ifurlparam][\u002Fifurlparam]\u003C\u002Fcode>. For example, \u003Ccode>[ifurlparam param=\"FirstName\"]Hey, I know you, [urlparam param=\"FirstName\"]![\u002Fifurlparam]\u003C\u002Fcode> would greet known visitors, but display nothing to users without a FirstName in the query string.\u003C\u002Fp>\n\u003Cp>If you want to show content when a value does NOT exist, you can set \u003Ccode>empty\u003C\u002Fcode> in \u003Ccode>[ifurlparam]\u003C\u002Fcode>. For example \u003Ccode>[ifurlparam param=\"FirstName\" empty=\"1\"]Welcome to the site, visitor![\u002Fifurlparam]\u003C\u002Fcode> would greet visitors without a FirstName in the query string, but display nothing for visitors with FirstName in the query string.\u003C\u002Fp>\n\u003Cp>If you want to show content only to visitors with a specific value in their query string, you can set \u003Ccode>is\u003C\u002Fcode> in \u003Ccode>[ifurlparam]\u003C\u002Fcode>. For example, \u003Ccode>[ifurlparam param=\"FirstName\" is=\"Bob\"]Hi, Bob![\u002Fifurlparam]\u003C\u002Fcode>, would only greet visitors with the FirstName param set to Bob.\u003C\u002Fp>\n\u003Cp>If you want to have urlparam return an HTML attribute, for example to use in pre-setting the value of input or hidden input fields, pass in the optional \u003Ccode>attr\u003C\u002Fcode> parameter. You might set a value attribute for an input field like so: \u003Ccode>\u003Cinput type=\"text\" name=\"firstname\" [urlparam attr=\"value\" param='FirstName']>\u003C\u002Fcode> or you might set a src attribute for an image tag like so: \u003Ccode>\u003Cimg [urlparam attr=\"src\" param='imgurl']>\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>If you want urlparam to return an entire HTML tag, for example in creating an input field, pass in the optional \u003Ccode>htmltag\u003C\u002Fcode> parameter. For example, \u003Ccode>[urlparam htmltag=\"input\" type=\"text\" name=\"firstname\" id=\"first\" attr=\"value\" param=\"FirstName\" default=\"Bob\" \u002F]\u003C\u002Fcode> will produce something like \u003Ccode>\u003Cinput type=\"text\" name=\"firstname\" id=\"first\" value=\"Bob\" \u002F>\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch3>Security\u003C\u002Fh3>\n\u003Cp>To help protect your site against \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCross-site_scripting\" rel=\"nofollow ugc\">Reflected Cross Site Scripting\u003C\u002Fa>, we sanitize output with \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fesc_html\" rel=\"nofollow ugc\">esc_html()\u003C\u002Fa> which prevents any HTML tags from being passed in and displayed. This would prevent someone from passing in javascript, for example, and having it execute on your site.\u003C\u002Fp>\n\u003Cp>Starting in the \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fcore\u002F2015\u002F07\u002F23\u002Fchanges-to-the-shortcode-api\u002F\" rel=\"nofollow ugc\">WordPress 4.2.3 security auto-update\u003C\u002Fa>, you can no longer include shortcodes in HTML attributes. Previous to this WordPress update, you could set a field value like this: \u003Ccode>\u003Cinput type=\"text\" name=\"firstname\" value=\"[urlparam param='FirstName']\">\u003C\u002Fcode>. Now you have to set it like this: \u003Ccode>\u003Cinput type=\"text\" name=\"firstname\" [urlparam attr=\"value\" param='FirstName']>\u003C\u002Fcode> or  \u003Ccode>[urlparam htmltag=\"input\" type=\"text\" name=\"firstname\" attr=\"value\" param=\"FirstName\" \u002F]\u003C\u002Fcode>. If you are still using this shortcode the old way, unfortunately, WordPress simply won’t process the shortcode and will return the full shortcode text unprocessed.\u003C\u002Fp>\n\u003Cp>To prevent unprivileged users (like Contributors) from using this shortcode to have privileged users (like Admins) accidentally execute arbitrary javascript via HTML attributes (like \u003Ccode>onclick\u003C\u002Fcode>, \u003Ccode>onmouseover\u003C\u002Fcode>, etc), html tags and attributes are sanitized.\u003C\u002Fp>\n\u003Cp>If you do need have a need to set certain sanitized tags or attributes, at your own risk, you can manually allow these from the URL Params options page under Settings.\u003C\u002Fp>\n","Short Code to grab any URL parameter from the Query String and display it or display conditional content.",8000,101489,100,37,"2024-12-17T19:03:00.000Z","3.0",[99,100,101,85,102],"query-string","url","url-parameters","urlparam","http:\u002F\u002Fasandia.com\u002Fwordpress-plugins\u002Furlparams\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Furl-params.2.5.zip","2023-04-25 00:00:00",{"slug":107,"name":108,"version":109,"author":110,"author_profile":111,"description":112,"short_description":113,"active_installs":114,"downloaded":115,"rating":94,"num_ratings":116,"last_updated":117,"tested_up_to":73,"requires_at_least":15,"requires_php":16,"tags":118,"homepage":123,"download_link":124,"security_score":125,"vuln_count":82,"unpatched_count":11,"last_vuln_date":126,"fetched_at":59},"reading-progress-bar","Reading progressbar","1.3.1","Jb Audras","https:\u002F\u002Fprofiles.wordpress.org\u002Faudrasjb\u002F","\u003Cp>Get a reading position indicator as a progress bar and show it where you want: top, bottom or custom position in differents templates or post types.\u003C\u002Fp>\n\u003Cp>Very lightweight, it uses \u003Ccode>\u003Cprogress>\u003C\u002Fcode> HTML5 element and few lines of javascript.\u003C\u002Fp>\n\u003Cp>Options:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Progress bar’s height\u003C\u002Fli>\n\u003Cli>Foreground color\u003C\u002Fli>\n\u003Cli>Background color\u003C\u002Fli>\n\u003Cli>Position (top, bottom, custom)\u003C\u002Fli>\n\u003Cli>Class\u002FID of HTML element to fix the bar (if custom position selected)\u003C\u002Fli>\n\u003Cli>Page templates\u003C\u002Fli>\n\u003Cli>Post types (natives or custom)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Credits\u003C\u002Fstrong> :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fjeanbaptisteaudras.com\u002F\" title=\"Jean-Baptiste Audras\" rel=\"nofollow ugc\">Jean-Baptiste Audras\u003C\u002Fa>, project manager at \u003Ca href=\"http:\u002F\u002Fwww.whodunit.fr\u002F\" title=\"Whodunit WordPress Agency\" rel=\"nofollow ugc\">Whodunit\u003C\u002Fa> and WordPress developer. @audrasjb on \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Faudrasjb\" title=\"@audrasjb on Twitter\" rel=\"nofollow ugc\">Twitter\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faudrasjb\" title=\"@audrasjb on Github\" rel=\"nofollow ugc\">Github\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n","A reading position indicator that you can use where you want: top, bottom or custom position in differents templates or post types.",6000,73050,17,"2026-02-18T12:09:00.000Z",[119,120,121,19,122],"indicator","progress","progressbar","scroll","https:\u002F\u002Fjeanbaptisteaudras.com\u002Fportfolio\u002Fwordpress-reading-progressbar-indicator-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freading-progress-bar.1.3.1.zip",99,"2026-03-12 00:00:00",{"slug":128,"name":129,"version":130,"author":131,"author_profile":132,"description":133,"short_description":134,"active_installs":135,"downloaded":136,"rating":137,"num_ratings":138,"last_updated":139,"tested_up_to":140,"requires_at_least":141,"requires_php":142,"tags":143,"homepage":149,"download_link":150,"security_score":94,"vuln_count":11,"unpatched_count":11,"last_vuln_date":23,"fetched_at":59},"webspellchecker","WProofreader spell & grammar check plugin for WordPress","3.0.0","WebSpellChecker","https:\u002F\u002Fprofiles.wordpress.org\u002Fwebspellchecker\u002F","\u003Cp>WProofreader plugin for WordPress scans and checks your website content for spelling,  grammar, punctuation and style issues. No banner ads on your website!\u003C\u002Fp>\n\u003Cp>Compatible with the following WordPress versions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>WordPress 4.x\u003C\u002Fli>\n\u003Cli>WordPress 5.x\u003C\u002Fli>\n\u003Cli>WordPress 6.x\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Free WProofreader plugin\u003C\u002Fstrong> supports only spell-check for 6 languages and comes with a usage limit of 10,000 words processed per day for a single website. Upon reaching the limit, the plugin stops working until the next day. Check more differences between WProofreader plugin free and pro versions below.\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\u002FmhrZN87jydA?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>WProofreader Free and Pro versions\u003C\u002Fh3>\n\u003Ch4>Free version: ($0)\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Usage limit:\u003C\u002Fstrong> Up to 10,000 words processed per day for a single website. Once the daily limit is reached, the plugin will stop working.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Allowed number of websites:\u003C\u002Fstrong> 1 website.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Languages available for spell checking:\u003C\u002Fstrong> (6 languages) American English, British English, French, German, Italian and Spanish.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Languages available for grammar checking:\u003C\u002Fstrong> Not available.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-level custom dictionary:\u003C\u002Fstrong> No cloud backup. The dictionary is only available in one browser on a single device.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Organization-level custom dictionary:\u003C\u002Fstrong> Not available.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Pro version: ($49)\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Usage limit:\u003C\u002Fstrong> Up to 100 million words processed per year. No daily limits applied.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Allowed number of websites:\u003C\u002Fstrong> unlimited\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Languages available for spell checking:\u003C\u002Fstrong> 20+ popular languages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Languages available for grammar checking:\u003C\u002Fstrong> Not all listed languages support grammar checks. \u003Ca href=\"https:\u002F\u002Fwebspellchecker.com\u002Fsupported-languages\u002F\" rel=\"nofollow ugc\">Here\u003C\u002Fa> is the updated list of supported languages and the ones marked for grammar check.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-level custom dictionary:\u003C\u002Fstrong> Stored in the cloud, available from any browser or device. The user can freely access, review and modify the list of words in the dictionary.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Organization-level custom dictionary:\u003C\u002Fstrong> The subscription owner can create global dictionaries that will be available across all the connected websites.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>User functionality\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Proofreading modes\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The check-as-you-type mode instantaneously detects writing mistakes and provides suggestions on-hover.\u003C\u002Fli>\n\u003Cli>The proofread-in-dialog mode aggregates all the issues detected and suggestions provided.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Customizable dictionaries\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>User-level custom dictionary\u003C\u002Fstrong> allows end users to create personal dictionaries with specific words and terms (complex words, acronyms, proper names, etc.) and use them while working with WordPress. Once a word is added to a personal dictionary, it will not be considered as a misspelling, and will appear in the suggestions list. All customly added words are stored either in the browser local storage or on our cloud and are accessible from the browser\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Organization-level custom dictionary\u003C\u002Fstrong> allows creating company-wide dictionaries that extend the vocabulary of the standard dictionary with custom words specific to your company culture, industry, domain, etc. All the words added to an organization-level custom dictionary by the admin will be available to all users within your company. This type of dictionary is available only under the Pro version\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Specialized medical spelling dictionaries\u003C\u002Fstrong> for English, German, French and Spanish  and legal dictionaries for English. Available for both — free and Pro versions of the plugin\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Feature-rich\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Multi-language support\u003C\u002Fli>\n\u003Cli>Spelling autocorrect functionality for instant correction of common typos\u003C\u002Fli>\n\u003Cli>Autocomplete suggestions functionality for faster writing\u003C\u002Fli>\n\u003Cli>Style guide functionality with pre-defined non-inclusive and profanity language check for professional writing\u003C\u002Fli>\n\u003Cli>User-level and organization-level dictionaries\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>User-friendly and up-to-date\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Straightforward plugin configuration (check the video tutorial)\u003C\u002Fli>\n\u003Cli>Visible and intuitive text check with different colors used for  spelling, grammar, and style guide issues\u003C\u002Fli>\n\u003Cli>Easily toggle on\u002Foff the plugin button\u003C\u002Fli>\n\u003Cli>Support the latest version of WordPress\u003C\u002Fli>\n\u003Cli>Seamlessly integrates with the WordPress latest editor — Gutenberg and compatible with the classic editor of WordPress 4.x.\u003C\u002Fli>\n\u003Cli>Support of the browsers: \u003Cem>Chrome, Firefox, Safari, Microsoft Edge, Internet Explorer 11\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>Content elements supported: \u003Cem>pages, posts, tag descriptions, category descriptions, WooCommerce, WP eCommerce product descriptions, any custom post types, meta description fields of Yoast SEO plugin.\u003C\u002Fem>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Benefits of  WProofreader plugin for WordPress\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>It saves time proofreading in any of the two modes – check-as-you type and proofread-in-dialog.\u003C\u002Fli>\n\u003Cli>You can create and maintain quality posts in different languages without worries about possible mistakes.\u003C\u002Fli>\n\u003Cli>Advanced functionality for spelling autocorrect, autocomplete suggestions and style guide for faster and more productive writing.\u003C\u002Fli>\n\u003C\u002Ful>\n","WProofreader checks spelling, grammar, and style in real-time while editing in WordPress.",4000,94485,74,15,"2025-10-31T15:01:00.000Z","6.8.5","6.3","7.4",[144,145,146,147,148],"grammar-check","proofreading","spell-check","typo-correction","writing-assistant","https:\u002F\u002Fwebspellchecker.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwebspellchecker.3.0.0.zip",{"attackSurface":152,"codeSignals":192,"taintFlows":200,"riskAssessment":201,"analyzedAt":204},{"hooks":153,"ajaxHandlers":188,"restRoutes":189,"shortcodes":190,"cronEvents":191,"entryPointCount":11,"unprotectedCount":11},[154,160,164,168,171,174,179,182,186],{"type":155,"name":156,"callback":157,"file":158,"line":159},"action","admin_menu","add_options_page","admin\\class-admin.php",11,{"type":155,"name":161,"callback":162,"file":158,"line":163},"admin_enqueue_scripts","enqueue_scripts",12,{"type":155,"name":165,"callback":166,"file":158,"line":167},"init","handle_options",13,{"type":155,"name":169,"callback":162,"file":170,"line":163},"wp_enqueue_scripts","includes\\class-frontend.php",{"type":155,"name":172,"callback":173,"file":170,"line":167},"wp_footer","add_progress_bar",{"type":175,"name":176,"callback":177,"file":170,"line":178},"filter","the_content","add_progress_bar_wrapper",14,{"type":175,"name":180,"callback":181,"file":170,"line":138},"comments_template","add_progress_bar_wrapper_comment",{"type":175,"name":183,"callback":184,"file":170,"line":185},"the_title","add_time_to_title",16,{"type":175,"name":176,"callback":187,"file":170,"line":116},"add_time_to_content",[],[],[],[],{"dangerousFunctions":193,"sqlUsage":194,"outputEscaping":196,"fileOperations":11,"externalRequests":11,"nonceChecks":82,"capabilityChecks":11,"bundledLibraries":199},[],{"prepared":11,"raw":11,"locations":195},[],{"escaped":197,"rawEcho":11,"locations":198},62,[],[],[],{"summary":202,"deductions":203},"The security posture of the \"display-post-reading-time\" plugin v0.1 appears to be strong based on the provided static analysis.  There are no identified AJAX handlers, REST API routes, shortcodes, or cron events that constitute an attack surface.  The code signals further indicate good security practices, with no dangerous functions, all SQL queries using prepared statements, and all output properly escaped.  File operations and external HTTP requests are also absent, reducing potential vectors for compromise. The presence of a nonce check, even with no explicit capability checks, is a positive sign for input validation, although the lack of capability checks could be a concern in more complex scenarios.  The taint analysis shows zero flows with unsanitized paths, indicating no critical or high severity vulnerabilities were detected in this regard.  Furthermore, the plugin has no recorded CVEs, which suggests a history of secure development or at least no publicly disclosed vulnerabilities.  The lack of any recorded vulnerabilities, common types, or recent issues further reinforces this positive assessment.  Overall, this plugin exhibits a commendable level of security for a version 0.1 release, with a minimal attack surface and robust coding practices in place. However, the absence of capability checks, while not explicitly leading to a deduction given the minimal attack surface, is a point to monitor as the plugin evolves.",[],"2026-03-17T05:42:04.930Z",{"wat":206,"direct":217},{"assetPaths":207,"generatorPatterns":211,"scriptPaths":212,"versionParams":213},[208,209,210],"\u002Fwp-content\u002Fplugins\u002Fdisplay-post-reading-time\u002Fassets\u002Fcss\u002Fpost-read-time.css","\u002Fwp-content\u002Fplugins\u002Fdisplay-post-reading-time\u002Fassets\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fdisplay-post-reading-time\u002Fassets\u002Fjs\u002Ffrontend.js",[],[209,210],[214,215,216],"display-post-reading-time\u002Fassets\u002Fcss\u002Fpost-read-time.css?ver=","display-post-reading-time\u002Fassets\u002Fjs\u002Fadmin.js?ver=","display-post-reading-time\u002Fassets\u002Fjs\u002Ffrontend.js?ver=",{"cssClasses":218,"htmlComments":223,"htmlAttributes":224,"restEndpoints":225,"jsGlobals":226,"shortcodeOutput":228},[219,220,221,222],"read-time-progress-bar-container","read-time-progress-bar","read-time-content-wrapper","read-time-content-wrapper-comment",[],[],[],[227],"settingsOptions",[],{"error":230,"url":231,"statusCode":232,"statusMessage":233,"message":233},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fdisplay-post-reading-time\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":11,"versions":235},[]]