{"id":51180,"date":"2016-09-26T17:46:25","date_gmt":"2016-09-26T17:46:25","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/devvn-image-hotspot\/"},"modified":"2025-12-11T20:30:48","modified_gmt":"2025-12-11T20:30:48","slug":"devvn-image-hotspot","status":"publish","type":"plugin","link":"https:\/\/pl.wordpress.org\/plugins\/devvn-image-hotspot\/","author":15123600,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.0","stable_tag":"1.3.0","tested":"6.9.4","requires":"4.6","requires_php":"","requires_plugins":null,"header_name":"Image Hotspot by DevVN","header_author":"Le Van Toan","header_description":"","assets_banners_color":"335663","last_updated":"2025-12-11 20:30:48","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/levantoan.com\/donate\/","header_plugin_uri":"https:\/\/levantoan.com\/devvn-image-hotspot","header_author_uri":"https:\/\/levantoan.com\/","rating":4.3,"author_block_rating":0,"active_installs":30000,"downloads":384571,"num_ratings":28,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"levantoan","date":"2016-10-11 15:18:20"},"1.0.1":{"tag":"1.0.1","author":"levantoan","date":"2016-11-28 15:44:42"},"1.0.2":{"tag":"1.0.2","author":"levantoan","date":"2016-11-28 15:44:42"},"1.0.3":{"tag":"1.0.3","author":"levantoan","date":"2016-12-03 16:55:04"},"1.0.4":{"tag":"1.0.4","author":"levantoan","date":"2017-02-27 17:40:27"},"1.0.5":{"tag":"1.0.5","author":"levantoan","date":"2017-04-03 20:07:00"},"1.0.6":{"tag":"1.0.6","author":"levantoan","date":"2017-04-08 14:52:04"},"1.0.7":{"tag":"1.0.7","author":"levantoan","date":"2017-05-29 19:36:55"},"1.0.8":{"tag":"1.0.8","author":"levantoan","date":"2017-08-22 19:04:08"},"1.0.9":{"tag":"1.0.9","author":"levantoan","date":"2017-11-17 17:07:33"},"1.1.0":{"tag":"1.1.0","author":"levantoan","date":"2017-11-23 16:50:53"},"1.1.1":{"tag":"1.1.1","author":"levantoan","date":"2017-11-27 02:52:09"},"1.1.2":{"tag":"1.1.2","author":"levantoan","date":"2017-11-30 16:41:43"},"1.1.3":{"tag":"1.1.3","author":"levantoan","date":"2017-12-07 12:52:12"},"1.1.4":{"tag":"1.1.4","author":"levantoan","date":"2018-01-24 15:54:37"},"1.1.5":{"tag":"1.1.5","author":"levantoan","date":"2019-02-11 17:10:43"},"1.1.6":{"tag":"1.1.6","author":"levantoan","date":"2019-02-11 17:10:43"},"1.1.7":{"tag":"1.1.7","author":"levantoan","date":"2019-03-31 05:57:10"},"1.1.8":{"tag":"1.1.8","author":"levantoan","date":"2019-05-18 17:41:03"},"1.1.9":{"tag":"1.1.9","author":"levantoan","date":"2020-03-27 17:45:54"},"1.2.1":{"tag":"1.2.1","author":"levantoan","date":"2020-12-14 12:55:33"},"1.2.2":{"tag":"1.2.2","author":"levantoan","date":"2024-03-06 07:56:48"},"1.2.3":{"tag":"1.2.3","author":"levantoan","date":"2024-03-06 07:56:48"},"1.2.5":{"tag":"1.2.5","author":"levantoan","date":"2024-08-16 16:00:46"},"1.2.6":{"tag":"1.2.6","author":"levantoan","date":"2024-08-22 17:32:51"},"1.2.7":{"tag":"1.2.7","author":"levantoan","date":"2024-08-26 13:39:34"},"1.2.8":{"tag":"1.2.8","author":"levantoan","date":"2024-09-25 18:43:33"},"1.2.9":{"tag":"1.2.9","author":"levantoan","date":"2025-07-15 17:53:57"},"1.3.0":{"tag":"1.3.0","author":"levantoan","date":"2025-12-11 20:30:48"}},"upgrade_notice":[],"ratings":{"1":4,"2":0,"3":1,"4":1,"5":22},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":1520057,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":1520057,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":1503014,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8","1.1.9","1.2.1","1.2.2","1.2.3","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-2.png":{"filename":"screenshot-2.png","revision":3417728,"resolution":"2","location":"plugin"},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3417728,"resolution":"1","location":"plugin"}},"screenshots":{"1":"screenshot-1.png","2":"screenshot-2.png"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[6720,133,146663,2660,2321],"plugin_category":[49,50],"plugin_contributors":[98163],"plugin_business_model":[],"class_list":["post-51180","plugin","type-plugin","status-publish","hentry","plugin_tags-hotspot","plugin_tags-image","plugin_tags-image-hotspot","plugin_tags-maps","plugin_tags-points","plugin_category-maps-and-location","plugin_category-media","plugin_contributors-levantoan","plugin_committers-levantoan"],"banners":{"banner":"https:\/\/ps.w.org\/devvn-image-hotspot\/assets\/banner-772x250.png?rev=1503014","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/devvn-image-hotspot\/assets\/icon-128x128.jpg?rev=1520057","icon_2x":"https:\/\/ps.w.org\/devvn-image-hotspot\/assets\/icon-256x256.jpg?rev=1520057","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/devvn-image-hotspot\/trunk\/screenshot-1.png?rev=3417728","caption":"screenshot-1.png"},{"src":"https:\/\/ps.w.org\/devvn-image-hotspot\/trunk\/screenshot-2.png?rev=3417728","caption":"screenshot-2.png"}],"raw_content":"<!--section=description-->\n<p>Image Hotspot by DevVN helps you add hotspots to your images.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Copy your shortcode to view, e.g.: [devvn_ihotspot id=\"YOUR_ID\"]<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=id2Kt6gUKhs<\/p>\n\n<h3>jQuery plugin include<\/h3>\n\n<ul>\n<li>jQuery PowerTip <a href=\"https:\/\/stevenbenner.github.io\/jquery-powertip\/\">PowerTop Home<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the entire <code>devvn-image-hotspot<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<\/ol>\n\n<p>You will find 'Image Hotspot' menu in your WordPress admin panel.<\/p>\n\n<p>For basic usage, you can also have a look at the <a href=\"https:\/\/levantoan.com\/devvn-image-hotspot\">plugin homepage<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20to%20change%20the%20background%20tooltip%20and%20text%20color%3F'><h3>How to change the background tooltip and text color?<\/h3><\/dt>\n<dd><p>Read here <a href=\"https:\/\/github.com\/levantoan\/WordPress\/blob\/master\/devvn-image-hotspot\/change-background-popup-to-white.css\">change the background tooltip and text color<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>For more information, see <a href=\"https:\/\/levantoan.com\/devvn-image-hotspot\">Releases<\/a>.<\/p>\n\n<h4>1.3.0 - 12\/12\/2025<\/h4>\n\n<ul>\n<li>SECURITY: Fix Stored Cross-Site Scripting (XSS) vulnerability in hotspot_content custom field meta (CVE-2025-14445)<\/li>\n<li>SECURITY: Add re-sanitization of data points when loaded from database to prevent XSS attacks<\/li>\n<li>SECURITY: Enhance input sanitization for all data point fields (content, URLs, text fields, numeric values)<\/li>\n<li>SECURITY: Add capability check (edit_posts) to AJAX handler for clone point functionality<\/li>\n<li>SECURITY: Add wp_unslash() to all $_POST and $_REQUEST inputs before sanitization<\/li>\n<li>SECURITY: Add sanitization callback for register_setting() to validate and sanitize plugin options<\/li>\n<li>CODE: Rename functions to follow WordPress naming conventions (add plugin prefix)<\/li>\n<li>CODE: Fix WordPress Coding Standards violations (function prefixes, hook names, input sanitization)<\/li>\n<li>CODE: Improve code quality and compliance with WordPress Plugin Check requirements<\/li>\n<li>CODE: Add proper escaping and sanitization throughout the plugin<\/li>\n<\/ul>\n\n<h4>1.2.9 - 16\/07\/2025<\/h4>\n\n<ul>\n<li>Add ALT to main image<\/li>\n<\/ul>\n\n<h4>1.2.8 - 26\/09\/2024<\/h4>\n\n<ul>\n<li>Fix shortcode in content pin.<\/li>\n<li>Enable iframe in content pin.<\/li>\n<\/ul>\n\n<h4>1.2.7 - 26\/08\/2024<\/h4>\n\n<ul>\n<li>Update JS to be compatible with lazy load<\/li>\n<li>Update .pot file (Thanks to Alex Lion (\u963f\u529b\u7345) feedback)<\/li>\n<\/ul>\n\n<h4>1.2.6 - 23\/08\/2024<\/h4>\n\n<ul>\n<li>Add allowed_classes =&gt; false to unserialize. As suggested by \"Michelle Porter - Wordfence Web Application Vulnerability Analyst\". Many thanks to Michelle Porter<\/li>\n<li>Add ALT tag to point<\/li>\n<\/ul>\n\n<h4>1.2.5 - 16\/08\/2024<\/h4>\n\n<ul>\n<li>Fix serious error in version 1.2.4<\/li>\n<\/ul>\n\n<h4>1.2.4 - 16\/08\/2024<\/h4>\n\n<ul>\n<li>Fix Authenticated (Author+) PHP Object Injection. Thanks to Lucio S\u00e1<\/li>\n<li>Add editor JS and TinyMCE JS<\/li>\n<\/ul>\n\n<h4>1.2.2 - 05\/03\/2022<\/h4>\n\n<ul>\n<li>Add option for popup full screen or normal on mobile<\/li>\n<li>Fix css close button<\/li>\n<\/ul>\n\n<h4>1.2.1 - 14\/12\/2020<\/h4>\n\n<ul>\n<li>Fix with WordPress 5.6<\/li>\n<\/ul>\n\n<h4>1.2.0 - 03\/04\/2020<\/h4>\n\n<ul>\n<li>Fix: CSS RTL<\/li>\n<\/ul>\n\n<h4>1.1.9 - 28\/03\/2020<\/h4>\n\n<ul>\n<li>Fix: Stop video when close tooltips<\/li>\n<\/ul>\n\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>PHP Compatibility: compatible with PHP &gt;= 7.2<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Fix: compatibility with WordPress 5.x.x<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fix: text domain from <code>devvn<\/code> to <code>devvn-image-hotspot<\/code><\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Fix: potential theme CSS conflict<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Fix: Edit link in popup<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Fix: some CSS styles<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fix: some CSS styles in admin panel<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Update: some CSS styles<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add: target for link pins<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fix: conflict with some themes<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Update responsive for popup<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: conflict with Avada theme<\/li>\n<li>Don't load modal Bootstrap if it exists or is loaded<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Add: ID and Class for pins<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Add: Select Placement for each Pin<\/li>\n<li>Update PowerTip: PowerTip 1.3.0<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Edit: Don't show tooltip when empty content<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Add Pulse to pins<\/li>\n<li>Edit style<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Edit css<\/li>\n<li>Compress css and js in frontend<\/li>\n<li>Add donate button in side<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>[ADD] Link to pins<\/li>\n<li>[ADD] Custom different icons and different hover icons.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Update new plugin<\/li>\n<\/ul>","raw_excerpt":"Image Hotspot by DevVN helps you add hotspots to your images.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/51180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=51180"}],"author":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/levantoan"}],"wp:attachment":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=51180"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=51180"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=51180"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=51180"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=51180"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=51180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}