[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fctrrzZFHtA3HrX92EuTExackd9wcQiCIqp57szuIr80":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":28,"unpatched_count":29,"last_vuln_date":30,"fetched_at":31,"vulnerabilities":32,"developer":71,"crawl_stats":38,"alternatives":79,"analysis":180,"fingerprints":831},"vr-frases","VR-Frases","4.1.0","Vicente Ruiz Gálvez","https:\u002F\u002Fprofiles.wordpress.org\u002Fvruizg\u002F","\u003Cp>VR-Frases is a comprehensive quote management plugin that allows you to organize, categorize, and display collections of famous quotes and phrases. Perfect for websites that want to share inspirational content, literary quotes, or wisdom from notable figures.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Quote Management\u003C\u002Fstrong>: Add, edit, and organize quotes with full CRUD functionality\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Author Profiles\u003C\u002Fstrong>: Manage author information including biographical data and Wikipedia links\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Classification System\u003C\u002Fstrong>: Organize quotes using classes (categories) and themes (tags)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Search & Filter\u003C\u002Fstrong>: Advanced search functionality by author, class, or theme\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Import\u002FExport\u003C\u002Fstrong>: Bulk import quotes from CSV\u002FTXT files and export your collection\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Display Options\u003C\u002Fstrong>: Multiple ways to display quotes on your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive Design\u003C\u002Fstrong>: Mobile-friendly interface and displays\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Display Methods:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Random Quote\u003C\u002Fstrong>: Show a random quote anywhere using \u003Ccode>[randomfrase]\u003C\u002Fcode> shortcode\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quote Collection\u003C\u002Fstrong>: Display all quotes with search functionality using \u003Ccode>[vrfrases]\u003C\u002Fcode> shortcode\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widget\u003C\u002Fstrong>: Add random quotes to sidebars and widget areas\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Admin Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Intuitive dashboard for managing quotes, authors, classes, and themes\u003C\u002Fli>\n\u003Cli>Quick edit functionality for fast updates\u003C\u002Fli>\n\u003Cli>Bulk operations for efficient management\u003C\u002Fli>\n\u003Cli>Import wizard for adding multiple quotes at once\u003C\u002Fli>\n\u003Cli>Export functionality to backup or share your quote collection\u003C\u002Fli>\n\u003Cli>Author management with biographical information and Wikipedia integration\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>For Developers:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Clean, well-documented code following WordPress standards\u003C\u002Fli>\n\u003Cli>Template functions for custom implementations\u003C\u002Fli>\n\u003Cli>Hooks and filters for extensibility\u003C\u002Fli>\n\u003Cli>Database optimization with proper indexing\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The plugin creates dedicated database tables to efficiently store quotes, authors, classes, and themes, ensuring optimal performance even with large collections.\u003C\u002Fp>\n","Organize and display quotes with author management, classification, and search functionality. Includes widgets, shortcodes, and import\u002Fexport features &hellip;",40,8878,100,1,"2025-10-17T18:11:00.000Z","6.8.5","5.5","7.2",[20,21,22,23,24],"citas","citations","frases","quotes","random","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fvr-frases\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fvr-frases.4.1.0.zip",98,3,0,"2025-01-29 21:20:39","2026-03-15T15:16:48.613Z",[33,49,61],{"id":34,"url_slug":35,"title":36,"description":37,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":42,"cvss_vector":43,"vuln_type":44,"published_date":30,"updated_date":45,"references":46,"days_to_patch":48},"CVE-2025-0860","vr-frases-collect-share-quotes-reflected-cross-site-scripting","VR-Frases (collect & share quotes) \u003C= 3.0.1 - Reflected Cross-Site Scripting","The VR-Frases (collect & share quotes) plugin for WordPress is vulnerable to Reflected Cross-Site Scripting via several parameters in all versions up to, and including, 3.0.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link. CVE-2025-22636 appears to be a duplicate of this issue.",null,"\u003C=3.0.1","4.0","medium",6.1,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2025-07-24 19:09:25",[47],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ff5ea3e03-fafa-431e-b1fe-a527f491da79?source=api-prod",176,{"id":50,"url_slug":51,"title":52,"description":53,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":54,"cvss_vector":55,"vuln_type":56,"published_date":57,"updated_date":58,"references":59,"days_to_patch":48},"CVE-2025-0861","vr-frases-collect-share-quotes-authenticated-admin-sql-injection","VR-Frases (collect & share quotes) \u003C= 3.0.1 - Authenticated (Admin+) SQL Injection","The VR-Frases (collect & share quotes) plugin for WordPress is vulnerable to SQL Injection via several parameters in all versions up to, and including, 3.0.1 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query.  This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.",4.9,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:H\u002FUI:N\u002FS:U\u002FC:H\u002FI:N\u002FA:N","Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')","2025-01-29 21:19:54","2025-07-24 19:09:37",[60],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F1d9d5afb-d38d-442c-8511-f1683739a1da?source=api-prod",{"id":62,"url_slug":63,"title":64,"description":65,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":42,"cvss_vector":43,"vuln_type":44,"published_date":66,"updated_date":67,"references":68,"days_to_patch":70},"CVE-2024-13626","vr-frases-reflected-cross-site-scripting","VR Frases \u003C= 3.0.1 - Reflected Cross-Site Scripting","The VR-Frases (collect & share quotes) plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in all versions up to, and including, 3.0.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link.","2025-01-27 00:00:00","2025-07-24 19:07:49",[69],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F0b151b74-b08c-4d84-aca8-5fb768c84a9e?source=api-prod",179,{"slug":72,"display_name":7,"profile_url":8,"plugin_count":73,"total_installs":74,"avg_security_score":75,"avg_patch_time_days":76,"trust_score":77,"computed_at":78},"vruizg",2,120,92,177,73,"2026-04-04T09:07:07.811Z",[80,104,125,145,161],{"slug":81,"name":82,"version":83,"author":84,"author_profile":85,"description":86,"short_description":87,"active_installs":88,"downloaded":89,"rating":90,"num_ratings":91,"last_updated":92,"tested_up_to":93,"requires_at_least":94,"requires_php":95,"tags":96,"homepage":100,"download_link":101,"security_score":102,"vuln_count":73,"unpatched_count":29,"last_vuln_date":103,"fetched_at":31},"easy-quotes","Easy Quotes","1.3.7","Jürgen Müller","https:\u002F\u002Fprofiles.wordpress.org\u002Fjuergen74\u002F","\u003Cp>Easy Quotes let you collect and display your favorite Quotes \u002F Reviews \u002F Testimonials or any other short snippet of Text you want to present on your site.\u003C\u002Fp>\n\u003Cp>Main Features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Custom Post Type “Quotes” with Quick Edit and Bulk Actions\u003C\u002Fli>\n\u003Cli>Add Custom Meta: Author, Date and Rating with Stars\u003C\u002Fli>\n\u003Cli>Gutenberg Block “Easy Quotes” to present your Collection all over your Site. (Block-Widget\u002FPages\u002FPosts etc.)\u003C\u002Fli>\n\u003Cli>Show Random or Daily “Quotes” by Category or choose a Specific Quote.\u003C\u002Fli>\n\u003Cli>Option to rotate Quotes by Category\u003C\u002Fli>\n\u003Cli>Option to show Quotes as a List by Category\u003C\u002Fli>\n\u003Cli>Use Google Fonts and other typographic features to style your Quote.\u003C\u002Fli>\n\u003Cli>Built to blend into any style, but customizable with CSS to fit your needs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Try my new Plugin\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Feasy-architect\u002F\" rel=\"ugc\">Easy Architect\u003C\u002Fa>\u003C\u002Fp>\n","Collect and show your favorite Quotes \u002F Reviews \u002F Testimonials or any other short snippet of Text.",700,14366,94,6,"2026-01-07T13:03:00.000Z","6.9.4","6.7","7.4",[97,98,23,24,99],"daily","lyrics","testimonials","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasy-quotes.1.3.7.zip",97,"2025-09-22 00:00:00",{"slug":105,"name":106,"version":107,"author":108,"author_profile":109,"description":110,"short_description":111,"active_installs":112,"downloaded":113,"rating":114,"num_ratings":91,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":100,"tags":118,"homepage":122,"download_link":123,"security_score":124,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"easy-random-quotes","Easy Random Quotes","1.8","Kailey (trepmal)","https:\u002F\u002Fprofiles.wordpress.org\u002Ftrepmal\u002F","\u003Cp>Insert quotes and pull them randomly into your pages and posts (via shortcodes) or your template (via template tags).\u003Cbr \u002F>\nCan refer to quote IDs to use specific quotes. Also widget-enabled\u003C\u002Fp>\n","Insert quotes and pull them randomly into your pages and posts (via shortcodes) or your template (via template tags).",500,21239,86,"2016-09-29T02:57:00.000Z","4.6.30","2.8",[119,120,121],"random-quotes","shortcodes","widget","http:\u002F\u002Ftrepmal.com\u002Fplugins\u002Feasy-random-quotes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasy-random-quotes.1.8.zip",85,{"slug":126,"name":127,"version":128,"author":129,"author_profile":130,"description":131,"short_description":132,"active_installs":133,"downloaded":134,"rating":135,"num_ratings":91,"last_updated":136,"tested_up_to":93,"requires_at_least":137,"requires_php":95,"tags":138,"homepage":100,"download_link":141,"security_score":142,"vuln_count":143,"unpatched_count":73,"last_vuln_date":144,"fetched_at":31},"xv-random-quotes","XV Random Quotes","2.7.0","Xavi Ivars","https:\u002F\u002Fprofiles.wordpress.org\u002Fxavivars\u002F","\u003Cp>XV Random Quotes helps you collect and display random quotes everywhere on your WordPress site. Built with modern WordPress standards using Custom Post Types, Gutenberg blocks, and the REST API.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Modern WordPress Integration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom Post Type\u003C\u002Fstrong> – Quotes are managed as native WordPress posts with full revision history\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gutenberg Blocks\u003C\u002Fstrong> – Three dedicated blocks: Random Quote, Specific Quote, and List Quotes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>REST API\u003C\u002Fstrong> – Access quotes programmatically for headless WordPress and custom integrations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Taxonomy Support\u003C\u002Fstrong> – Organize quotes with categories and authors (with URL support)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Block Editor\u003C\u002Fstrong> – Full support with dedicated meta boxes for quote content and source\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>✨ Key Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multiple Display Methods\u003C\u002Fstrong> – Widgets, shortcodes, template tags, and Gutenberg blocks\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AJAX-Powered Widgets\u003C\u002Fstrong> – Automatic quote rotation without page reload (configurable timer)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Category Filtering\u003C\u002Fstrong> – Display quotes from specific categories or all quotes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Author Management\u003C\u002Fstrong> – Track quote authors with optional URL links\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible Ordering\u003C\u002Fstrong> – Random or sequential quote display\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Native Styling Toggle\u003C\u002Fstrong> – Use plugin’s default styling or your theme’s styles\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Complete Backward Compatibility\u003C\u002Fstrong> – All legacy shortcodes and template tags still work\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>📦 Display Options\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Gutenberg Blocks\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>Random Quote Block – Display one or more random quotes\u003C\u002Fli>\n\u003Cli>Specific Quote Block – Show a particular quote by ID\u003C\u002Fli>\n\u003Cli>List Quotes Block – Paginated list of quotes with filtering\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widgets\u003C\u002Fstrong>: Sidebar widget with AJAX refresh and category filtering\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcodes\u003C\u002Fstrong>: \u003Ccode>[stray-random]\u003C\u002Fcode>, \u003Ccode>[stray-id]\u003C\u002Fcode>, \u003Ccode>[stray-all]\u003C\u002Fcode> for posts and pages\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Template Tags\u003C\u002Fstrong>: \u003Ccode>stray_random_quote()\u003C\u002Fcode>, \u003Ccode>stray_a_quote()\u003C\u002Fcode> for theme integration\u003C\u002Fli>\n\u003Cli>\u003Cstrong>REST API\u003C\u002Fstrong>: \u003Ccode>\u002Fwp-json\u002Fxv-random-quotes\u002Fv1\u002Fquote\u002Frandom\u003C\u002Fcode> for custom integrations\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>🔄 Automatic Migration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Upgrading from v1.x? The plugin automatically detects the need of migrating your existing quotes to the new Custom Post Type system. The migration is always manual to prevent race conditions and duplicate imports. When the plugin is activated or updated, an admin notice prompts the user to start the migration via a button. The migration then processes quotes in batches via AJAX.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎨 Customization\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Customize HTML wrappers (before\u002Fafter quote, author, source)\u003C\u002Fli>\n\u003Cli>Control author and source link formatting\u003C\u002Fli>\n\u003Cli>AJAX loading messages and animations\u003C\u002Fli>\n\u003Cli>Native WordPress styling or custom CSS\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxavivars\u002Fxv-random-quotes\u002Fblob\u002Fmain\u002FRELEASE_NOTES.md\" rel=\"nofollow ugc\">RELEASE_NOTES.md\u003C\u002Fa> for complete v2.0 features and migration guide.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>For main development of Stray Quotes, \u003Ca href=\"http:\u002F\u002Funalignedcode.wordpress.com\u002Fmy-wordpress-plugins\u002Fstray-random-quotes\u002F\" rel=\"nofollow ugc\">Ico\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>For Multi-widget functionality, \u003Ca href=\"http:\u002F\u002Fwp.gdragon.info\u002F2008\u002F07\u002F06\u002Fcreate-multi-instances-widget\u002F\" rel=\"nofollow ugc\">Millian’s tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>For help in developing user-end AJAX functionality, \u003Ca href=\"http:\u002F\u002Fwww.matrixagents.org\" rel=\"nofollow ugc\">AgentSmith\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>For search functionality and bugfixing, \u003Ca href=\"http:\u002F\u002Fwww.zeyalabs.ch\u002Fposts\u002F2010\u002Fstray-quotes-z\u002F\" rel=\"nofollow ugc\">Sergey Sirotkin\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Localization\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>German, thanks to Markus Griesbach\u003C\u002Fli>\n\u003Cli>Chinese, thanks to WGMking\u003C\u002Fli>\n\u003Cli>Croatian, thanks to \u003Ca href=\"http:\u002F\u002Fwww.atrium.hr\u002F\" rel=\"nofollow ugc\">Rajic\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Danish, thanks to \u003Ca href=\"http:\u002F\u002Fwordpress.blogos.dk\u002F\" rel=\"nofollow ugc\">Georg\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Actually, these translations are not updated to the latest version.\u003Cbr \u002F>\nI am looking for new localizers, all languages welcome!\u003C\u002Fp>\n\u003Cp>\u003Cem>Please note:\u003C\u002Fem> the best way to \u003Cstrong>submit new or updated translations\u003C\u002Fstrong> is to send me a direct link to the localization files in \u003Ca href=\"http:\u002F\u002Fxavi.ivars.me\u002Fcontacta\u002F\" rel=\"nofollow ugc\">the contact page\u003C\u002Fa> of my website. This way the files are made available to the users sooner, and without waiting for a new release.\u003C\u002Fp>\n\u003Cp>\u003Cem>Please note:\u003C\u002Fem> If you want to create a localized copy of XV Random Quotes, consider skipping the help page and translate the rest. This will save you quite some time. The help page has a lot of text.\u003C\u002Fp>\n\u003Ch3>Known Issues\u003C\u002Fh3>\n\u003Cp>None currently reported for v2.0. If you find an issue, please report it on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxavivars\u002Fxv-random-quotes\u002Fissues\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n","Display and rotate quotes anywhere on your WordPress site. Fully integrated with WordPress Custom Post Types, Gutenberg blocks, and REST API.",300,8991,74,"2026-02-17T18:38:00.000Z","6.0",[139,140,23,24,121],"blocks","gutenberg","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fxv-random-quotes.2.7.0.zip",54,4,"2025-04-03 00:00:00",{"slug":146,"name":147,"version":148,"author":149,"author_profile":150,"description":151,"short_description":152,"active_installs":13,"downloaded":153,"rating":154,"num_ratings":143,"last_updated":155,"tested_up_to":156,"requires_at_least":157,"requires_php":100,"tags":158,"homepage":159,"download_link":160,"security_score":124,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"mg-quotes","mg Quotes","1.1.5","mgiulio","https:\u002F\u002Fprofiles.wordpress.org\u002Fgiuliom\u002F","\u003Cp>This plugin adds a new custom post type to manage and publish your favorite quotes with WordPress.\u003C\u002Fp>\n\u003Cp>Quick features summary:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Enter the quote content in a multiline editor\u003C\u002Fli>\n\u003Cli>Optionally assign an author to a quote, with autocompletion for already existent authors\u003C\u002Fli>\n\u003Cli>Optionally assign multiple hierarchical categories to the quote\u003C\u002Fli>\n\u003Cli>Optionally assign one or more custom fields: date, where, link, …\u003C\u002Fli>\n\u003Cli>Autogeneration of quote titles\u003C\u002Fli>\n\u003Cli>Quickly browse through your quotes with author and\u002For category filters and full text search\u003C\u002Fli>\n\u003Cli>Import\u002FExport of quotes between WordPress installations\u003C\u002Fli>\n\u003Cli>Publish quotes on the front end with widgets, shortcodes and template tags\u003C\u002Fli>\n\u003Cli>Restrict or allow access to the quotes and the relative operations in admin with fine grained access control \u003C\u002Fli>\n\u003Cli>Cleanup on uninstall\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Manage the quotes\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Start managing your quotes accessing the new top menu ‘Quotes’:\u003C\u002Fp>\n\u003Cp>In the quote editor enter the quote content and optionally, its author(if you have already added it before just type a part of its name to get an autocompletion) and\u003Cbr \u002F>\none or more (hierarchical) categories.\u003Cbr \u002F>\nIt is possible to define a title for the quotes, mainly used in the quote listing; if it is not provided it will be autogenerated.\u003Cbr \u002F>\nIt is also possible to define some custom fields, for example to assign further informations about the quote, such as a date, a link, a place, …\u003C\u002Fp>\n\u003Cp>The authors are implemented with a custom taxonomy, so from the Quotes\u002FAuthors page it is possible to manage them with the standard WP interface.\u003C\u002Fp>\n\u003Cp>From the Quotes\u002FAll quotes page there is the standard post list table WP user interface to browse through the quotes.\u003Cbr \u002F>\nThere is the full text search and two filters for the author and\u002For the category.\u003C\u002Fp>\n\u003Cp>\u003Cem>Restrict or allow access to the quotes and the relative operations in admin with fine grained access control\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>The plugin defines and assigns at installation time the following primitive capabilities to the ‘administrator’ role:\u003C\u002Fp>\n\u003Cp>Category custom taxonomy:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>‘manage_quote_categories’\u003C\u002Fli>\n\u003Cli>‘edit_quote_categories’\u003C\u002Fli>\n\u003Cli>‘delete_quote_categories’\u003C\u002Fli>\n\u003Cli>‘assign_quote_categories’\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Author custom taxonomy:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>‘manage_quote_authors’\u003C\u002Fli>\n\u003Cli>‘edit_quote_authors’\u003C\u002Fli>\n\u003Cli>‘delete_quote_authors’\u003C\u002Fli>\n\u003Cli>‘assign_quote_authors’\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Quote custom post type:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>‘edit_quotes’\u003C\u002Fli>\n\u003Cli>‘edit_others_quotes’\u003C\u002Fli>\n\u003Cli>‘publish_quotes’\u003C\u002Fli>\n\u003Cli>‘read_private_quotes’\u003C\u002Fli>\n\u003Cli>‘read’\u003C\u002Fli>\n\u003Cli>‘delete_quotes’\u003C\u002Fli>\n\u003Cli>‘delete_private_quotes’\u003C\u002Fli>\n\u003Cli>‘delete_published_quotes’\u003C\u002Fli>\n\u003Cli>‘delete_others_quotes’\u003C\u002Fli>\n\u003Cli>‘edit_private_quotes’\u003C\u002Fli>\n\u003Cli>‘edit_published_quotes’\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Their names should be self-explanatory.\u003C\u002Fp>\n\u003Cp>To customize the access control it is sufficient to grant\u002Frevoke such caps with a role editing plugin, for example \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fuser-role-editor\u002F\" rel=\"ugc\">User Role Editor\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cem>Import\u002FExport\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>To copy all the quotes from a WordPress instance to another just use the related tools provided by WordPress, accessible from the Tools menu.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Publish the quotes\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Quotes can be published on the front end with three methods: widgets, shortcodes and template tags.\u003C\u002Fp>\n\u003Cp>\u003Cem>Widgets\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>The Selected Quote and the Random Quote widgets can be used to to display one single quote in the widget areas provided by the used theme.\u003C\u002Fp>\n\u003Cp>The Selected Quote widget allows to display a specific quote. Just select it with the control that lists all quotes by their titles.\u003C\u002Fp>\n\u003Cp>The random quote displayed by the homonymous widget can be optionally limited to the quotes by an author and\u002For a category using the provided controls.\u003C\u002Fp>\n\u003Cp>\u003Cem>Shortcodes\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Shortcodes can be used to display quotes in posts and pages.\u003C\u002Fp>\n\u003Cp>To display a quote in a post or page use the [quote] shortcode passing it the ID of the quote.\u003Cbr \u002F>\nQuote IDs can be easily read from the Quotes\u002FAll Quotes page, hovering with the mouse on the relevant row of the quotes list table.\u003Cbr \u002F>\nSo, to display in a post a quote whose ID is 181 just enter [quote id=”181] in the post content editor.\u003C\u002Fp>\n\u003Cp>To display a random quote from all the quotes or only from a category and\u002For author there is the [rnd_quote] shortcode.\u003Cbr \u002F>\nCategory and author, when provided, must be identified by their name.\u003Cbr \u002F>\nExample:\u003C\u002Fp>\n\u003Cp>[rnd_quote] -> random quote\u003Cbr \u002F>\n[rnd_quote author=”Oscar Wilde”] -> a random quote from the author ‘Oscar Wilde’\u003Cbr \u002F>\n[rnd_quote category=”Art”] -> a random quote from the ‘Art’ category\u003Cbr \u002F>\n[rnd_quote category=”Art” author=”Pablo Picasso”] -> a random quote in the ‘Art’ category and by the ‘Pablo Picasso’ author\u003C\u002Fp>\n\u003Cp>\u003Cem>Template tags\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>If you prefer to modify the theme templates, two template tags are available that mimic the behaviour of the widgets and shortcodes.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>mg_qt_get_quote($id) gets a single quote, specified by its ID\u003C\u002Fli>\n\u003Cli>mg_qt_get_rnd_quote($category = null, $author = null) Pick one random quote, optionally from the category and\u002For the author specified(by they names)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>These two functions return a string with the HTML markup for the picked quote; mg_qt_quote($id) and mg_qt_rnd_quote($category = null, $author = null)\u003Cbr \u002F>\ninstead directly output the markup.\u003C\u002Fp>\n\u003Cp>\u003Cem>Quote markup customization\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>By default the markup generated for a quote is something like this:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cblockquote class=\"mg_qt_quote\">\n    \u003Cp>WordPress puts food on my table\u003C\u002Fp>\n    \u003Cfooter class=\"meta\">\n        \u003Ccite class=\"author\">Mark Jaquith\u003C\u002Fcite>\n    \u003C\u002Ffooter>\n\u003C\u002Fblockquote>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>To modify this template the ‘mg_qt_quote_markup’ filter is available. It it invoked with two parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>The generated html\u003C\u002Fli>\n\u003Cli>An associative array with the quote data. The available keys are: ‘content’, ‘author’, ‘title’, ‘id’.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.pinterest.com\u002Fpin\u002F119415827596386237\u002F\" rel=\"nofollow ugc\">Some additional info\u003C\u002Fa>.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Source Code\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The plugin source code is also availabe on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmgiulio\u002Fmg-quotes\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n","Manage and publish your favorite quotes with WordPress",4780,80,"2015-03-21T15:41:00.000Z","4.0.38","3.1",[23,119],"http:\u002F\u002Fmgiulio.info\u002Fprojects\u002Fmg-quotes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmg-quotes.zip",{"slug":162,"name":163,"version":164,"author":165,"author_profile":166,"description":167,"short_description":168,"active_installs":169,"downloaded":170,"rating":13,"num_ratings":14,"last_updated":171,"tested_up_to":172,"requires_at_least":173,"requires_php":100,"tags":174,"homepage":178,"download_link":179,"security_score":124,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"nice-quotes-rotator","Nice Quotes Rotator","1.0","CodeAndReload","https:\u002F\u002Fprofiles.wordpress.org\u002Fcodeandreload\u002F","\u003Cp>This plugin provides the ability to have randomly selected quotes displayed on the admin page, by using a\u003Cbr \u002F>\nshortcode or by using a sidebar widget. The quotes include user-entered quotes, and can optionally include\u003Cbr \u002F>\nexcerpts from a user-chosen category and can also optionally include links from a user-chosen links category\u003Cbr \u002F>\nThere also is an option for including the lyrics from “Hello Dolly”. The plugin can be used for random\u003Cbr \u002F>\nquotes, rotating testimonials, rotating random affiliate links, or random featured posts. It was inspired by\u003Cbr \u002F>\nthe Hello Dolly plugin (hello.php) that comes bundled with WordPress.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Technical support for this plugin will be provided via the WordPress plugin forum.  Additional support may be\u003Cbr \u002F>\navailable at \u003Ca href=\"http:\u002F\u002Fwww.codeandreload.com\u002Fwp-plugins\u002Fnicequotes\u002F\" title=\"Nice Quotes at Code\nand Reload\">plugin’s homepage\u003C\u002Fa>.\u003C\u002Fp>\n","Allows display of random quotes via shortcode, a sidebar widget, and\u002For on the admin page. Quotes can be user-entered, post excerpts or links.",90,13413,"2012-10-12T00:48:00.000Z","3.4.2","2.9",[175,176,177,23,24],"quotation","quotations","quote","http:\u002F\u002FCodeAndReload.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnice-quotes-rotator.1.0.zip",{"attackSurface":181,"codeSignals":357,"taintFlows":532,"riskAssessment":817,"analyzedAt":830},{"hooks":182,"ajaxHandlers":265,"restRoutes":337,"shortcodes":338,"cronEvents":355,"entryPointCount":356,"unprotectedCount":29},[183,189,194,199,204,207,212,215,220,223,228,231,235,240,243,246,250,255,261],{"type":184,"name":185,"callback":186,"file":187,"line":188},"action","init","vr_frases_register_ajax_handlers","admin\\vr-frases-functions-ajax.php",178,{"type":184,"name":190,"callback":191,"file":192,"line":193},"admin_post_vr_frases_exportar_csv","vr_frases_exportar_csv","admin\\vr-frases-import.php",780,{"type":184,"name":195,"callback":196,"file":197,"line":198},"admin_notices","vr_frases_show_gdpr_notice","admin\\vr-frases-options.php",70,{"type":184,"name":200,"callback":201,"file":202,"line":203},"wp_enqueue_scripts","vr_frases_enqueue_template_js","admin\\vr-frases-template.php",462,{"type":184,"name":200,"callback":205,"file":202,"line":206},"vr_frases_enqueue_frontend_assets",483,{"type":184,"name":208,"callback":209,"file":210,"line":211},"widgets_init","closure","admin\\vr-frases-widgets.php",52,{"type":184,"name":213,"callback":214,"file":210,"line":77},"wp_dashboard_setup","vr_frases_add_dashboard_widget",{"type":184,"name":216,"callback":217,"priority":14,"file":218,"line":219},"plugins_loaded","vr_frases_load_textdomain","includes\\vr-frases-activation.php",140,{"type":184,"name":185,"callback":221,"file":218,"line":222},"vr_frases_check_for_updates",175,{"type":184,"name":224,"callback":225,"file":226,"line":227},"admin_init","vr_frases_maybe_run_upgrades","includes\\vr-frases-database.php",647,{"type":184,"name":195,"callback":229,"file":226,"line":230},"vr_frases_upgrade_admin_notices",708,{"type":184,"name":232,"callback":233,"file":226,"line":234},"vr_frases_after_upgrade","vr_frases_cleanup_old_upgrade_logs",749,{"type":184,"name":236,"callback":237,"file":238,"line":239},"admin_enqueue_scripts","vr_frases_enqueue_style","includes\\vr-frases-enqueue.php",75,{"type":184,"name":236,"callback":241,"file":238,"line":242},"vr_frases_enqueue_scripts",271,{"type":184,"name":200,"callback":244,"file":238,"line":245},"vr_frases_enqueue_template_scripts",344,{"type":184,"name":224,"callback":247,"file":248,"line":249},"vr_frases_admin_init_setup","includes\\vr-frases-loader.php",72,{"type":184,"name":251,"callback":252,"file":253,"line":254},"admin_menu","vr_frases_add_menu","includes\\vr-frases-menu.php",123,{"type":256,"name":257,"callback":258,"priority":259,"file":253,"line":260},"filter","plugin_action_links","vr_frases_action_links",10,155,{"type":184,"name":195,"callback":262,"file":263,"line":264},"vr_frases_requirements_error","vr-frases.php",53,[266,273,277,281,286,290,295,299,303,307,311,315,316,317,320,324,328,333],{"action":267,"nopriv":268,"callback":269,"hasNonce":270,"hasCapCheck":270,"file":271,"line":272},"get_autor_data",false,"vr_frases_ajax_get_autor_data",true,"admin\\vr-frases-autores.php",584,{"action":274,"nopriv":268,"callback":275,"hasNonce":270,"hasCapCheck":270,"file":271,"line":276},"vrfr_add_autor","vr_frases_addnew_autor_ajax",741,{"action":278,"nopriv":268,"callback":279,"hasNonce":270,"hasCapCheck":270,"file":271,"line":280},"vr_frases_quick_edit_autores","vr_frases_quick_edit_ajax_autores",827,{"action":282,"nopriv":268,"callback":283,"hasNonce":270,"hasCapCheck":270,"file":284,"line":285},"vrfr_add_clase","vr_frases_addnew_clase_ajax","admin\\vr-frases-clases.php",336,{"action":287,"nopriv":268,"callback":288,"hasNonce":270,"hasCapCheck":270,"file":284,"line":289},"vr_frases_quick_edit_clases","vr_frases_quick_edit_ajax_clases",394,{"action":291,"nopriv":268,"callback":292,"hasNonce":270,"hasCapCheck":270,"file":293,"line":294},"vrfr_add_frase","vr_frases_ajax_add_frase","admin\\vr-frases-frases.php",648,{"action":296,"nopriv":268,"callback":297,"hasNonce":270,"hasCapCheck":270,"file":293,"line":298},"vr_frases_quick_edit_frases","vr_frases_quick_edit_ajax_frases",731,{"action":300,"nopriv":268,"callback":301,"hasNonce":270,"hasCapCheck":270,"file":293,"line":302},"vr_frases_get_frase_data","vr_frases_ajax_get_frase_data",791,{"action":304,"nopriv":268,"callback":305,"hasNonce":270,"hasCapCheck":270,"file":293,"line":306},"vr_frases_save_frase_data","vr_frases_ajax_save_frase_data",910,{"action":308,"nopriv":268,"callback":309,"hasNonce":270,"hasCapCheck":270,"file":187,"line":310},"vr_frases_delete_item","vr_frases_ajax_delete_item",88,{"action":312,"nopriv":268,"callback":313,"hasNonce":270,"hasCapCheck":270,"file":187,"line":314},"vr_frases_delete_multiple_items","vr_frases_ajax_delete_multiple_items",163,{"action":308,"nopriv":268,"callback":309,"hasNonce":270,"hasCapCheck":270,"file":187,"line":222},{"action":312,"nopriv":268,"callback":313,"hasNonce":270,"hasCapCheck":270,"file":187,"line":48},{"action":318,"nopriv":268,"callback":319,"hasNonce":270,"hasCapCheck":268,"file":187,"line":245},"search_wikipedia","vr_frases_search_wikipedia",{"action":321,"nopriv":268,"callback":322,"hasNonce":270,"hasCapCheck":270,"file":192,"line":323},"vr_frases_import_files","vr_frases_handle_import_ajax",345,{"action":325,"nopriv":268,"callback":326,"hasNonce":270,"hasCapCheck":268,"file":192,"line":327},"vr_frases_save_import","vr_frases_save_imported_data_ajax",715,{"action":329,"nopriv":268,"callback":330,"hasNonce":270,"hasCapCheck":270,"file":331,"line":332},"vrfr_add_tema","vr_frases_addnew_tema_ajax","admin\\vr-frases-temas.php",347,{"action":334,"nopriv":268,"callback":335,"hasNonce":270,"hasCapCheck":270,"file":331,"line":336},"vr_frases_quick_edit_temas","vr_frases_quick_edit_ajax_temas",405,[],[339,344,348,352],{"tag":340,"callback":341,"file":342,"line":343},"vrfrases","vr_frases_show_shortcode","admin\\vr-frases-shortcodes.php",32,{"tag":345,"callback":346,"file":342,"line":347},"randomfrase","vr_frases_randomfrase_shortcode",46,{"tag":349,"callback":350,"file":342,"line":351},"frasescount","vr_frases_frasescount_shortcode",60,{"tag":353,"callback":354,"file":342,"line":135},"autorescount","vr_frases_autorescount_shortcode",[],22,{"dangerousFunctions":358,"sqlUsage":359,"outputEscaping":447,"fileOperations":91,"externalRequests":14,"nonceChecks":526,"capabilityChecks":527,"bundledLibraries":528},[],{"prepared":360,"raw":361,"locations":362},152,43,[363,366,369,371,373,374,377,379,381,385,387,389,391,393,395,397,399,401,403,404,406,408,410,412,414,415,417,418,419,420,422,424,426,427,429,431,433,435,437,439,441,443,445],{"file":284,"line":364,"context":365},89,"$wpdb->get_var() with variable interpolation",{"file":293,"line":367,"context":368},356,"$wpdb->get_results() with variable interpolation",{"file":293,"line":370,"context":368},370,{"file":293,"line":372,"context":368},777,{"file":293,"line":193,"context":368},{"file":375,"line":376,"context":368},"admin\\vr-frases-functions-filters.php",537,{"file":375,"line":378,"context":368},560,{"file":375,"line":380,"context":365},621,{"file":382,"line":383,"context":384},"admin\\vr-frases-functions.php",182,"$wpdb->query() with variable interpolation",{"file":382,"line":386,"context":365},214,{"file":382,"line":388,"context":368},233,{"file":382,"line":390,"context":368},253,{"file":382,"line":392,"context":368},273,{"file":192,"line":394,"context":365},418,{"file":192,"line":396,"context":368},516,{"file":192,"line":398,"context":368},517,{"file":192,"line":400,"context":368},761,{"file":197,"line":402,"context":365},369,{"file":197,"line":370,"context":365},{"file":197,"line":405,"context":365},371,{"file":197,"line":407,"context":365},372,{"file":197,"line":409,"context":368},375,{"file":197,"line":411,"context":368},385,{"file":197,"line":413,"context":368},395,{"file":331,"line":90,"context":365},{"file":226,"line":416,"context":384},145,{"file":226,"line":260,"context":384},{"file":226,"line":76,"context":365},{"file":226,"line":70,"context":365},{"file":226,"line":421,"context":365},208,{"file":226,"line":423,"context":384},311,{"file":226,"line":425,"context":384},324,{"file":226,"line":285,"context":384},{"file":226,"line":428,"context":384},396,{"file":226,"line":430,"context":384},409,{"file":226,"line":432,"context":368},412,{"file":226,"line":434,"context":384},454,{"file":226,"line":436,"context":384},455,{"file":226,"line":438,"context":384},460,{"file":226,"line":440,"context":384},465,{"file":238,"line":442,"context":368},250,{"file":238,"line":444,"context":368},257,{"file":446,"line":74,"context":384},"uninstall.php",{"escaped":448,"rawEcho":361,"locations":449},674,[450,453,454,456,458,460,462,464,465,467,468,470,472,474,476,478,480,482,484,486,487,488,490,492,494,496,498,499,501,503,505,506,508,510,512,513,515,517,519,521,522,524,525],{"file":271,"line":451,"context":452},81,"raw output",{"file":271,"line":114,"context":452},{"file":271,"line":455,"context":452},317,{"file":284,"line":457,"context":452},269,{"file":293,"line":459,"context":452},112,{"file":293,"line":461,"context":452},169,{"file":293,"line":463,"context":452},197,{"file":293,"line":392,"context":452},{"file":293,"line":466,"context":452},354,{"file":293,"line":430,"context":452},{"file":293,"line":469,"context":452},417,{"file":375,"line":471,"context":452},91,{"file":375,"line":473,"context":452},99,{"file":375,"line":475,"context":452},121,{"file":375,"line":477,"context":452},129,{"file":192,"line":479,"context":452},403,{"file":192,"line":481,"context":452},497,{"file":197,"line":483,"context":452},58,{"file":197,"line":485,"context":452},61,{"file":197,"line":114,"context":452},{"file":197,"line":471,"context":452},{"file":197,"line":489,"context":452},204,{"file":197,"line":491,"context":452},276,{"file":197,"line":493,"context":452},583,{"file":197,"line":495,"context":452},587,{"file":202,"line":497,"context":452},166,{"file":202,"line":457,"context":452},{"file":202,"line":500,"context":452},319,{"file":202,"line":502,"context":452},327,{"file":202,"line":504,"context":452},363,{"file":202,"line":405,"context":452},{"file":202,"line":507,"context":452},406,{"file":210,"line":509,"context":452},41,{"file":210,"line":511,"context":452},42,{"file":210,"line":361,"context":452},{"file":210,"line":514,"context":452},45,{"file":210,"line":516,"context":452},48,{"file":446,"line":518,"context":452},68,{"file":446,"line":520,"context":452},69,{"file":446,"line":198,"context":452},{"file":446,"line":523,"context":452},71,{"file":446,"line":135,"context":452},{"file":446,"line":239,"context":452},25,17,[529],{"name":530,"version":38,"knownCves":531},"Select2",[],[533,555,594,612,634,649,660,675,686,706,720,731,739,753,764,782,797],{"entryPoint":534,"graph":535,"unsanitizedCount":14,"severity":41},"vr_frases_display_imported_data (admin\\vr-frases-import.php:399)",{"nodes":536,"edges":552},[537,542,546],{"id":538,"type":539,"label":540,"file":192,"line":541},"n0","source","$_GET",453,{"id":543,"type":544,"label":545,"file":192,"line":541},"n1","transform","→ vr_frases_form_paginar()",{"id":547,"type":548,"label":549,"file":375,"line":550,"wp_function":551},"n2","sink","echo() [XSS]",106,"echo",[553,554],{"from":538,"to":543,"sanitized":268},{"from":543,"to":547,"sanitized":268},{"entryPoint":556,"graph":557,"unsanitizedCount":14,"severity":41},"\u003Cvr-frases-import> (admin\\vr-frases-import.php:0)",{"nodes":558,"edges":588},[559,562,566,569,574,577,582,584,586],{"id":538,"type":539,"label":560,"file":192,"line":561},"$_POST",603,{"id":543,"type":548,"label":563,"file":192,"line":564,"wp_function":565},"get_row() [SQLi]",608,"get_row",{"id":547,"type":539,"label":567,"file":192,"line":568},"$_POST (x3)",604,{"id":570,"type":548,"label":571,"file":192,"line":572,"wp_function":573},"n3","get_var() [SQLi]",620,"get_var",{"id":575,"type":539,"label":560,"file":192,"line":576},"n4",737,{"id":578,"type":548,"label":579,"file":192,"line":580,"wp_function":581},"n5","header() [Header Injection]",743,"header",{"id":583,"type":539,"label":540,"file":192,"line":541},"n6",{"id":585,"type":544,"label":545,"file":192,"line":541},"n7",{"id":587,"type":548,"label":549,"file":375,"line":550,"wp_function":551},"n8",[589,590,591,592,593],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"from":575,"to":578,"sanitized":270},{"from":583,"to":585,"sanitized":268},{"from":585,"to":587,"sanitized":268},{"entryPoint":595,"graph":596,"unsanitizedCount":14,"severity":41},"vr_frases_show_main (admin\\vr-frases-template.php:59)",{"nodes":597,"edges":608},[598,600,602,604,606],{"id":538,"type":539,"label":599,"file":202,"line":471},"$_COOKIE",{"id":543,"type":548,"label":549,"file":202,"line":601,"wp_function":551},126,{"id":547,"type":539,"label":599,"file":202,"line":603},134,{"id":570,"type":544,"label":605,"file":202,"line":603},"→ vr_frases_render_preferences_bar()",{"id":575,"type":548,"label":549,"file":202,"line":607,"wp_function":551},213,[609,610,611],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":268},{"from":570,"to":575,"sanitized":268},{"entryPoint":613,"graph":614,"unsanitizedCount":73,"severity":41},"\u003Cvr-frases-template> (admin\\vr-frases-template.php:0)",{"nodes":615,"edges":628},[616,618,619,620,621,622,624,626],{"id":538,"type":539,"label":617,"file":202,"line":471},"$_COOKIE (x6)",{"id":543,"type":548,"label":549,"file":202,"line":601,"wp_function":551},{"id":547,"type":539,"label":599,"file":202,"line":603},{"id":570,"type":544,"label":605,"file":202,"line":603},{"id":575,"type":548,"label":549,"file":202,"line":607,"wp_function":551},{"id":578,"type":539,"label":599,"file":202,"line":623},246,{"id":583,"type":544,"label":625,"file":202,"line":623},"→ vr_frases_frontend_pagination()",{"id":585,"type":548,"label":549,"file":202,"line":627,"wp_function":551},346,[629,630,631,632,633],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":268},{"from":570,"to":575,"sanitized":268},{"from":578,"to":583,"sanitized":268},{"from":583,"to":585,"sanitized":268},{"entryPoint":635,"graph":636,"unsanitizedCount":29,"severity":648},"vr_frases_quick_edit_ajax_autores (admin\\vr-frases-autores.php:752)",{"nodes":637,"edges":645},[638,640,642,643],{"id":538,"type":539,"label":560,"file":271,"line":639},757,{"id":543,"type":548,"label":563,"file":271,"line":641,"wp_function":565},809,{"id":547,"type":539,"label":560,"file":271,"line":639},{"id":570,"type":548,"label":571,"file":271,"line":644,"wp_function":573},810,[646,647],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},"low",{"entryPoint":650,"graph":651,"unsanitizedCount":29,"severity":648},"\u003Cvr-frases-autores> (admin\\vr-frases-autores.php:0)",{"nodes":652,"edges":657},[653,654,655,656],{"id":538,"type":539,"label":560,"file":271,"line":639},{"id":543,"type":548,"label":563,"file":271,"line":641,"wp_function":565},{"id":547,"type":539,"label":560,"file":271,"line":639},{"id":570,"type":548,"label":571,"file":271,"line":644,"wp_function":573},[658,659],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":661,"graph":662,"unsanitizedCount":29,"severity":648},"vr_frases_quick_edit_ajax_clases (admin\\vr-frases-clases.php:347)",{"nodes":663,"edges":672},[664,666,668,670],{"id":538,"type":539,"label":560,"file":284,"line":665},353,{"id":543,"type":548,"label":571,"file":284,"line":667,"wp_function":573},368,{"id":547,"type":539,"label":560,"file":284,"line":669},352,{"id":570,"type":548,"label":563,"file":284,"line":671,"wp_function":565},386,[673,674],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":676,"graph":677,"unsanitizedCount":29,"severity":648},"\u003Cvr-frases-clases> (admin\\vr-frases-clases.php:0)",{"nodes":678,"edges":683},[679,680,681,682],{"id":538,"type":539,"label":560,"file":284,"line":665},{"id":543,"type":548,"label":571,"file":284,"line":667,"wp_function":573},{"id":547,"type":539,"label":560,"file":284,"line":669},{"id":570,"type":548,"label":563,"file":284,"line":671,"wp_function":565},[684,685],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":687,"graph":688,"unsanitizedCount":29,"severity":648},"vr_frases_quick_edit_ajax_frases (admin\\vr-frases-frases.php:659)",{"nodes":689,"edges":702},[690,692,694,695,697,698],{"id":538,"type":539,"label":560,"file":293,"line":691},664,{"id":543,"type":548,"label":563,"file":293,"line":693,"wp_function":565},705,{"id":547,"type":539,"label":560,"file":293,"line":691},{"id":570,"type":548,"label":571,"file":293,"line":696,"wp_function":573},706,{"id":575,"type":539,"label":560,"file":293,"line":691},{"id":578,"type":548,"label":699,"file":293,"line":700,"wp_function":701},"get_col() [SQLi]",707,"get_col",[703,704,705],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"from":575,"to":578,"sanitized":270},{"entryPoint":707,"graph":708,"unsanitizedCount":29,"severity":648},"vr_frases_ajax_get_frase_data (admin\\vr-frases-frases.php:742)",{"nodes":709,"edges":717},[710,712,714,715],{"id":538,"type":539,"label":560,"file":293,"line":711},754,{"id":543,"type":548,"label":563,"file":293,"line":713,"wp_function":565},762,{"id":547,"type":539,"label":560,"file":293,"line":711},{"id":570,"type":548,"label":699,"file":293,"line":716,"wp_function":701},772,[718,719],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":721,"graph":722,"unsanitizedCount":29,"severity":648},"vr_frases_save_imported_data_ajax (admin\\vr-frases-import.php:585)",{"nodes":723,"edges":728},[724,725,726,727],{"id":538,"type":539,"label":560,"file":192,"line":561},{"id":543,"type":548,"label":563,"file":192,"line":564,"wp_function":565},{"id":547,"type":539,"label":567,"file":192,"line":568},{"id":570,"type":548,"label":571,"file":192,"line":572,"wp_function":573},[729,730],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":732,"graph":733,"unsanitizedCount":29,"severity":648},"vr_frases_exportar_csv (admin\\vr-frases-import.php:727)",{"nodes":734,"edges":737},[735,736],{"id":538,"type":539,"label":560,"file":192,"line":576},{"id":543,"type":548,"label":579,"file":192,"line":580,"wp_function":581},[738],{"from":538,"to":543,"sanitized":270},{"entryPoint":740,"graph":741,"unsanitizedCount":29,"severity":648},"vr_frases_quick_edit_ajax_temas (admin\\vr-frases-temas.php:358)",{"nodes":742,"edges":750},[743,745,747,748],{"id":538,"type":539,"label":560,"file":331,"line":744},364,{"id":543,"type":548,"label":571,"file":331,"line":746,"wp_function":573},379,{"id":547,"type":539,"label":560,"file":331,"line":504},{"id":570,"type":548,"label":563,"file":331,"line":749,"wp_function":565},397,[751,752],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":754,"graph":755,"unsanitizedCount":29,"severity":648},"\u003Cvr-frases-temas> (admin\\vr-frases-temas.php:0)",{"nodes":756,"edges":761},[757,758,759,760],{"id":538,"type":539,"label":560,"file":331,"line":744},{"id":543,"type":548,"label":571,"file":331,"line":746,"wp_function":573},{"id":547,"type":539,"label":560,"file":331,"line":504},{"id":570,"type":548,"label":563,"file":331,"line":749,"wp_function":565},[762,763],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"entryPoint":765,"graph":766,"unsanitizedCount":14,"severity":781},"vr_frases_ajax_add_frase (admin\\vr-frases-frases.php:548)",{"nodes":767,"edges":777},[768,770,771,773,775],{"id":538,"type":539,"label":560,"file":293,"line":769},552,{"id":543,"type":548,"label":571,"file":293,"line":561,"wp_function":573},{"id":547,"type":539,"label":560,"file":293,"line":772},567,{"id":570,"type":544,"label":774,"file":293,"line":772},"→ vr_frases_comprobar_duplicados()",{"id":575,"type":548,"label":563,"file":293,"line":776,"wp_function":565},526,[778,779,780],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":268},{"from":570,"to":575,"sanitized":268},"high",{"entryPoint":783,"graph":784,"unsanitizedCount":14,"severity":781},"vr_frases_ajax_save_frase_data (admin\\vr-frases-frases.php:814)",{"nodes":785,"edges":793},[786,787,789,791,792],{"id":538,"type":539,"label":560,"file":293,"line":280},{"id":543,"type":548,"label":571,"file":293,"line":788,"wp_function":573},864,{"id":547,"type":539,"label":560,"file":293,"line":790},840,{"id":570,"type":544,"label":774,"file":293,"line":790},{"id":575,"type":548,"label":563,"file":293,"line":776,"wp_function":565},[794,795,796],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":268},{"from":570,"to":575,"sanitized":268},{"entryPoint":798,"graph":799,"unsanitizedCount":73,"severity":781},"\u003Cvr-frases-frases> (admin\\vr-frases-frases.php:0)",{"nodes":800,"edges":811},[801,802,803,805,806,807,808,809,810],{"id":538,"type":539,"label":567,"file":293,"line":769},{"id":543,"type":548,"label":571,"file":293,"line":561,"wp_function":573},{"id":547,"type":539,"label":804,"file":293,"line":691},"$_POST (x2)",{"id":570,"type":548,"label":563,"file":293,"line":693,"wp_function":565},{"id":575,"type":539,"label":804,"file":293,"line":691},{"id":578,"type":548,"label":699,"file":293,"line":700,"wp_function":701},{"id":583,"type":539,"label":804,"file":293,"line":772},{"id":585,"type":544,"label":774,"file":293,"line":772},{"id":587,"type":548,"label":563,"file":293,"line":776,"wp_function":565},[812,813,814,815,816],{"from":538,"to":543,"sanitized":270},{"from":547,"to":570,"sanitized":270},{"from":575,"to":578,"sanitized":270},{"from":583,"to":585,"sanitized":268},{"from":585,"to":587,"sanitized":268},{"summary":818,"deductions":819},"The 'vr-frases' v4.1.0 plugin exhibits a mixed security posture. While it demonstrates good practices by properly escaping a high percentage of outputs and utilizing prepared statements for a majority of its SQL queries, there are notable areas of concern. The taint analysis revealed a significant number of flows with unsanitized paths, including three of high severity, indicating potential vulnerabilities related to improper input handling that could lead to security issues if exploited.  Furthermore, the plugin has a history of three medium-severity vulnerabilities, specifically SQL Injection and Cross-Site Scripting, with the last recorded in early 2025. Although there are currently no unpatched CVEs, this historical pattern suggests that the plugin's developers may struggle with consistently sanitizing user input effectively. The large number of AJAX handlers, even with authorization checks present, contributes to a broad attack surface.",[820,823,826,828],{"reason":821,"points":822},"High severity unsanitized taint flows",15,{"reason":824,"points":825},"Medium severity historical vulnerabilities",9,{"reason":827,"points":91},"Significant number of unsanitized path flows",{"reason":829,"points":143},"Bundled outdated library (Select2)","2026-03-16T22:08:46.342Z",{"wat":832,"direct":843},{"assetPaths":833,"generatorPatterns":837,"scriptPaths":838,"versionParams":839},[834,835,836],"\u002Fwp-content\u002Fplugins\u002Fvr-frases\u002Fcss\u002Fvr-frases-frontend.css","\u002Fwp-content\u002Fplugins\u002Fvr-frases\u002Fcss\u002Fvr-frases-admin.css","\u002Fwp-content\u002Fplugins\u002Fvr-frases\u002Fjs\u002Fvr-frases-frontend.js",[],[],[840,841,842],"vr-frases\u002Fcss\u002Fvr-frases-frontend.css?ver=","vr-frases\u002Fcss\u002Fvr-frases-admin.css?ver=","vr-frases\u002Fjs\u002Fvr-frases-frontend.js?ver=",{"cssClasses":844,"htmlComments":850,"htmlAttributes":858,"restEndpoints":862,"jsGlobals":863,"shortcodeOutput":865},[845,846,847,848,849],"vr_frases_preferences_bar","vr_frases_search_input","vr_frases_quote_card","vr_frases_author_info","vr_frases_pagination",[851,852,853,854,855,856,857],"\u003C!-- VR-Frases Frontend Template Engine and Display System -->","\u003C!-- Main template orchestrator with preference management -->","\u003C!-- Preferences bar with style and display customization -->","\u003C!-- Search interface with advanced filtering capabilities -->","\u003C!-- Pagination controls with responsive design -->","\u003C!-- Quote card grid with author attribution and categorization -->","\u003C!-- Author information display with biographical integration -->",[859,860,861],"data-vr-frases-style","data-vr-frases-font-size","data-vr-frases-num-inputs",[],[864],"window.vr_frases_localize",[866,867,868,869,870],"\u003Cdiv id=\"vr_frases_frontend_wrapper\">","\u003Cdiv class=\"vr_frases_preferences_bar\">","\u003Cdiv class=\"vr_frases_search_bar\">","\u003Cdiv class=\"vr_frases_quote_grid\">","\u003Cdiv class=\"vr_frases_pagination\">"]