[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$flbY7KXFhFBpWZ4bqhIhukFz_EFB39g8ChuowPMYKmrI":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":18,"download_link":25,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":38,"analysis":138,"fingerprints":259},"if-so-geolocation","If-So Geolocation","1.5","If-So Dynamic Content","https:\u002F\u002Fprofiles.wordpress.org\u002Fifso\u002F","\u003Cp>Create location-based content in minutes. No coding required. Works with any page builder. No need to sync an IP-to-location database.\u003C\u002Fp>\n\u003Cp>This plugin enhances the Geolocation capabilities of the core \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fif-so\u002F\" rel=\"ugc\">If-So Dynamic Content plugin\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>HTML5 Geolocation API (browser location) – Can be used in addition to or instead of the IP-to-location service.\u003C\u002Fli>\n\u003Cli>Location override – Allow users to manually select their location and override the default IP-based location detection.\u003C\u002Fli>\n\u003Cli>Display the user’s country flag (image or emoji).\u003C\u002Fli>\n\u003Cli>Log geolocation requests and analyze the log to find and exclude bot traffic.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>WHY IF-SO?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Show dynamic content based on City, State, Country, Continent, or Time zoneSimple to use – No coding is required\u003C\u002Fli>\n\u003Cli>Geolocation DKi\u003C\u002Fli>\n\u003Cli>No need to sync with an IP-to-location database\u003C\u002Fli>\n\u003Cli>Works with any page builder\u003C\u002Fli>\n\u003Cli>100% compatible with all caching plugins (no need to disable the cache)\u003C\u002Fli>\n\u003Cli>A simple way to improve engagement and conversion rates\u003C\u002Fli>\n\u003Cli>Conditional Gutenberg Blocks and Elementor Widgets\u003C\u002Fli>\n\u003Cli>Create location-based pop-ups\u003C\u002Fli>\n\u003Cli>Built-in stats system\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>……………………………………………………………\u003C\u002Fp>\n\u003Ch3>HOW IT WORKS\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Select a condition >> Set a version of content to be displayed if it is met.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch4>All page builder users\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Create a trigger.\u003C\u002Fli>\n\u003Cli>Select a condition and set the personalized content version.\u003C\u002Fli>\n\u003Cli>Optional – create more dynamic versions and set the default content.\u003C\u002Fli>\n\u003Cli>Paste the shortcode wherever you want to display the content.\u003Cbr \u002F>\nWhenever a page with the shortcode is loaded, one of the content versions will be displayed accordingly.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fhelp\u002Fdocumentation\u002Fhow-to-create-dynamic-content-trigger\u002F?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=v2&utm_term=dynamic-trigger\" rel=\"nofollow ugc\">Learn more >>\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Gutenberg and Elementor users\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Select the block or element.\u003C\u002Fli>\n\u003Cli>On the side menu, select the condition to display the block\u002Felement.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Felementor-personalization\u002F?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=v2&utm_term=elementor\" rel=\"nofollow ugc\"> – More about conditional  Elementor Elements >>\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fconditional-gutenberg-blocks\u002F?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=v2&utm_term=gutenberg\" rel=\"nofollow ugc\"> – More about conditional  Gutenberg Blocks >>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>……………………………………………………………\u003C\u002Fp>\n\u003Ch3>HTML5 Geolocation API (browser location)\u003C\u002Fh3>\n\u003Cp>The Geolocation API-based content option is an alternative method for presenting location-specific content. This approach is significantly more accurate in determining the user’s location compared to the IP-to-location method (which is not crucial at the country and state level, but might be significant at the city level).\u003C\u002Fp>\n\u003Cp>The drawback of this approach is that it necessitates the user’s consent to share their location.\u003C\u002Fp>\n\u003Cp>The HTML5 Geolocation API method can be used in addition to or instead of the IP-to-location service.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fthe-html-geolocation-api\u002F?utm_source=WordPress&utm_medium=Readme&utm_campaign=v2&utm_term=html5_api\" rel=\"nofollow ugc\">– More about the HTML5 Geolocation API.\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>LOCATION OVERRIDE (MANUAL USER LOCATION SELECTION)\u003C\u002Fh3>\n\u003Cp>With the manual user location selection option, users can override the location detected by our IP-to-location service and manually select a different location. This allows for dynamic content to be displayed based on the user’s chosen location.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fdynamic-select-form\u002Fmanual-user-location-selection\u002F\" rel=\"nofollow ugc\"> – More about the Location Override option >>\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>LOG GEOLOCATION REQUESTS\u003C\u002Fh3>\n\u003Cp>Track bots that visit your site and exhaust your session quota. Log the geolocation requests to identify their IPs, analyze them,  and chose if you want to block them from the geolocation service.\u003C\u002Fp>\n\u003Cp>Although the site will remain open to visits from the blocked IPs, the geolocation service will be disabled for them and default content will be displayed instead of the location-based version.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Ffaq-items\u002Fthe-geolocation-session-count-doesnt-seem-to-behave-as-expected\u002F\" rel=\"nofollow ugc\"> – More about logging geolocation requests >>\u003C\u002Fa>\u003Cbr \u002F>\n……………………………………………………………\u003C\u002Fp>\n\u003Ch3>Use cases and examples\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Display the user’s country flag\u003C\u002Fli>\n\u003Cli>Highlight different products in specific locations\u003C\u002Fli>\n\u003Cli>Show reviews in the visitor’s language\u003C\u002Fli>\n\u003Cli>Display the time of an event in the user’s time zone (auto-local time display)\u003C\u002Fli>\n\u003Cli>Set up a conditional redirect\u003C\u002Fli>\n\u003Cli>Redirect all .com pages to corresponding pages on the local version of the site\u003C\u002Fli>\n\u003Cli>Allow users to manually set their location (location override)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fdynamic-content\u002Fexamples\u002F?category_filter%5B%5D=%7B%22cat%22%3A564%2C%22subcat%22%3A565%7D&category_filter%5B%5D=%7B%22cat%22%3A517%2C%22subcat%22%3A518%7D&apply_filter=\" rel=\"nofollow ugc\">More usage examples >>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>……………………………………………………………\u003C\u002Fp>\n\u003Ch3>Built-in stats\u003C\u002Fh3>\n\u003Cp>Get clear insights into your content performance! See real-time results with a built-in analytics system, like how many times each version was displayed and how it affected the conversion rate.\u003C\u002Fp>\n\u003Cp>……………………………………………………………\u003C\u002Fp>\n\u003Ch3>DYNAMIC KEYWORD INSERTION (DKI)\u003C\u002Fh3>\n\u003Cp>The Dynamic Keyword Insertion (DKI) option allows you to display values using shortcodes:\u003Cbr \u002F>\nDisplaying the user’s country:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Insert the user’s country:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='country' fallback='' ajax='yes']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s state:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='state' fallback='' ajax='yes']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s city:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='city' fallback='' ajax='yes']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s continent:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='continent' fallback='' ajax='yes']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s time zone:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='timezone' fallback='' ajax='yes']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s country flag (image):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI ajax='yes' type='geo' show='flag' width='50px']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Insert the user’s country flag (emoji):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='geo' show='emoji-flag']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fgeolocation-dki\u002F?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=v2&utm_term=geo-dki\" rel=\"nofollow ugc\">More Geolocation DKI shortcode options >>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The Auto-Local Time Display shortcode\u003C\u002Fstrong>\u003Cbr \u002F>\nDisplay the event time auto-adjusted to the user’s time zone.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[ifsoDKI type='time' show='user-geo-timezone-sensitive' time='04\u002F25\u002F2024 08:00' format='n\u002Fj\u002Fo, G:i']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.if-so.com\u002Fauto-local-time-display\u002F?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=v2&utm_term=local-time-display-dki\" rel=\"nofollow ugc\">More about the Auto-Local Time Display Shortcode >>\u003C\u002Fa>\u003C\u002Fp>\n","All-in-one geolocation. Personalized content, geolocation Dynamic Keyword Insertion shortcodes, Rediects, and more. No coding required!",1000,20240,100,4,"2025-12-11T21:50:00.000Z","6.9.4","4.0.1","",[20,21,22,23,24],"geoip","geolocation","geolocation-redirect","geotargeting","location-based-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fif-so-geolocation.1.5.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"ifso",3,10000,99,66,87,"2026-04-05T02:59:29.121Z",[39,63,82,101,121],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":49,"num_ratings":50,"last_updated":51,"tested_up_to":52,"requires_at_least":53,"requires_php":54,"tags":55,"homepage":59,"download_link":60,"security_score":34,"vuln_count":61,"unpatched_count":26,"last_vuln_date":62,"fetched_at":28},"geoip-detect","Geolocation IP Detection","5.6.1","Benjamin Pick","https:\u002F\u002Fprofiles.wordpress.org\u002Fbenjaminpick\u002F","\u003Cp>Provides geographic information detected by an IP adress. This can be used in themes or other plugins, as a shortcode, or via CSS body classes. The city & country names are translated in different languages (\u003Ca href=\"https:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fweb-services\u002F#Languages-8\" rel=\"nofollow ugc\">supported languages\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch4>Features:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>You can use one of these data sources (see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FFAQ#which-data-source-should-i-choose\" rel=\"nofollow ugc\">comparison\u003C\u002Fa>):\n\u003Cul>\n\u003Cli>Free (default source): \u003Ca href=\"http:\u002F\u002Fwww.hostip.info\u002F\" rel=\"nofollow ugc\">HostIP.info\u003C\u002Fa> (IPv4 only)\u003C\u002Fli>\n\u003Cli>Free with registration: \u003Ca href=\"http:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F\" rel=\"nofollow ugc\">Maxmind GeoIP2 Lite City\u003C\u002Fa>, automatically updated weekly\u003C\u002Fli>\n\u003Cli>Commercial: \u003Ca href=\"https:\u002F\u002Fwww.maxmind.com\u002Fen\u002Fgeoip2-country-database\" rel=\"nofollow ugc\">Maxmind GeoIP2 City\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fwww.maxmind.com\u002Fen\u002Fgeoip2-city\" rel=\"nofollow ugc\">Maxmind GeoIP2 Country\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Commercial Web-API: \u003Ca href=\"https:\u002F\u002Fwww.maxmind.com\u002Fen\u002Fgeoip2-precision-services\" rel=\"nofollow ugc\">Maxmind GeoIP2 Precision\u003C\u002Fa> (City, Country or Insights)\u003C\u002Fli>\n\u003Cli>Hosting-Provider dependent: \u003Ca href=\"https:\u002F\u002Fsupport.cloudflare.com\u002Fhc\u002Fen-us\u002Farticles\u002F200168236-What-does-CloudFlare-IP-Geolocation-do-\" rel=\"nofollow ugc\">Cloudflare\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Faws\u002Fenhanced-cloudfront-customization\u002F\" rel=\"nofollow ugc\">Amazon AWS CloudFront\u003C\u002Fa> (Country)\u003C\u002Fli>\n\u003Cli>Free or Commercial Web-API: \u003Ca href=\"https:\u002F\u002Fipstack.com\" rel=\"nofollow ugc\">Ipstack\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Commercial Web-API via AWS Marketplace: \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fmarketplace\u002Fpp\u002Fprodview-k5gjowexrefl2\" rel=\"nofollow ugc\">Fastah\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Provides these 5 functions (see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FAPI:-PHP\" rel=\"nofollow ugc\">API Documentation\u003C\u002Fa>):\n\u003Cul>\n\u003Cli>\u003Ccode>geoip_detect2_get_info_from_ip($ip, $locales = array('en'), $options = array())\u003C\u002Fcode>: Lookup Geo-Information of the specified IP\u003C\u002Fli>\n\u003Cli>\u003Ccode>geoip_detect2_get_info_from_current_ip($locales = array('en'), $options = array())\u003C\u002Fcode>: Lookup Geo-Information of the current website user\u003C\u002Fli>\n\u003Cli>\u003Ccode>geoip_detect2_get_current_source_description(...)\u003C\u002Fcode>: Return a human-readable label of the currently chosen source.\u003C\u002Fli>\n\u003Cli>\u003Ccode>geoip_detect2_get_external_ip_adress()\u003C\u002Fcode>: Fetch the internet adress of the webserver\u003C\u002Fli>\n\u003Cli>\u003Ccode>geoip_detect2_get_client_ip()\u003C\u002Fcode>: Get client IP (even if it is behind a reverse proxy)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>For the property names, see the results of a specific IP in the wordpress backend (under \u003Cem>Tools > Geolocation IP Detection\u003C\u002Fem>).\u003C\u002Fli>\n\u003Cli>You can include these properties into your posts and pages by using the shortcode \u003Ccode>[geoip_detect2 property=\"country.name\" default=\"(country could not be detected)\" lang=\"en\"]\u003C\u002Fcode> (where ‘country.name’ can be one of the other property names as well, and ‘default’ and ‘lang’ are optional).\u003C\u002Fli>\n\u003Cli>You can show or hide content by using a shortcode \u003Ccode>[geoip_detect2_show_if country=\"FR, DE\" not_city=\"Berlin\"]TEXT[\u002Fgeoip_detect2_show_if]\u003C\u002Fcode>. See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FAPI:-Shortcodes#show-or-hide-content-depending-on-the-location\" rel=\"nofollow ugc\">Shortcode Documentation\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>When enabled on the options page, it adds CSS classes to the body tag such as \u003Ccode>geoip-province-HE\u003C\u002Fcode>, \u003Ccode>geoip-country-DE\u003C\u002Fcode> and \u003Ccode>geoip-continent-EU\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>If you are using a page cache, it is recommended to use the AJAX mode (see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FAPI:-AJAX\" rel=\"nofollow ugc\">AJAX\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>When enabled on the options page, the client IP respects a reverse proxy of the server.\u003C\u002Fli>\n\u003Cli>If you are using \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcontact-form-7\u002F\" rel=\"ugc\">Contact Form 7\u003C\u002Fa>, you can use these shortcodes:\n\u003Cul>\n\u003Cli>A select input with all countries, the detected country being selected by default: \u003Ccode>[geoip_detect2_countries mycountry]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>A text input that is pre-filled with the detected city (or other property): \u003Ccode>[geoip_detect2_text_input city property:city lang:fr id:id class:class default:Paris]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Geolocation information for the email text: \u003Ccode>[geoip_detect2_user_info]\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>If you are using \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwpforms-lite\u002F\" rel=\"ugc\">WP Forms\u003C\u002Fa>, you can use this shortcode:\n\u003Cul>\n\u003Cli>Geolocation information for the email text: \u003Ccode>[geoip_detect2_user_info]\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Together with \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsvg-flags-lite\u002F\" rel=\"ugc\">SVG Flags\u003C\u002Fa> you can show the flag of the detected country: \u003Ccode>[geoip_detect2_current_flag]\u003C\u002Fcode> (see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FAPI:-Shortcodes#add-a-flag-of-the-visitors-country\" rel=\"nofollow ugc\">documentation\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> for more info.\u003C\u002Fp>\n\u003Ch4>How can I use these functions?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>You could choose the currency of the store based on the country name\u003C\u002Fli>\n\u003Cli>You could pre-fill the shipping country\u003C\u002Fli>\n\u003Cli>You could show the store nearest to your customer\u003C\u002Fli>\n\u003Cli>You show or hide content specific to a geographic target group\u003C\u002Fli>\n\u003Cli>Etc. … You tell me! I’m rather curious what you’ll do with this plugin!\u003C\u002Fli>\n\u003Cli>Be careful to comply to the applicable laws. For example Regulation (EU) 2018\u002F302 …\u003C\u002Fli>\n\u003Cli>If you need to get the user’s timezone, it is more accurate to use JS solutions.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>System Requirements\u003C\u002Fstrong>: You will need at least PHP 7.2.5 . Also, if you use the plugin WooCommerce, you’ll need at least WooCommerce 3.9.0 .\u003C\u002Fp>\n\u003Cp>\u003Cem>GDPR: See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FFAQ#is-this-plugin-gdpr-compliant\" rel=\"nofollow ugc\">Is this plugin GDPR-compliant?\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cem>This extension is “charity-ware”. If you are happy with it, please \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fcgi-bin\u002Fwebscr?cmd=_s-xclick&hosted_button_id=BSYUZHS8FH3CL\" rel=\"nofollow ugc\">leave a tip\u003C\u002Fa> for the benefit of \u003Ca href=\"http:\u002F\u002Fwww.jmem-hainichen.de\u002Fhomepage\" rel=\"nofollow ugc\">this charity\u003C\u002Fa>. (See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FFAQ#what-you-mean-by-this-plugin-is-charity-ware\" rel=\"nofollow ugc\">FAQ\u003C\u002Fa> for more infos.)\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cem>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md\" rel=\"nofollow ugc\">Here are other ways to contribute to the development of this plugin.\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cem>This product can provide GeoLite2 data created by MaxMind, available from http:\u002F\u002Fwww.maxmind.com.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch3>Troubleshooting\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Does \u003Ccode>geoip_detect2_get_info_from_current_ip()\u003C\u002Fcode> return the same country, regardless of where you are visiting the site from? \u003C\u002Fli>\n\u003Cli>Maybe your server has a reverse proxy configured. You can check this: Go to the options page and look for “reverse proxy”. Are there 2 IPs listed there? If so, which one corresponds to your \u003Ca href=\"https:\u002F\u002Fwww.whatismyip.com\u002F\" rel=\"nofollow ugc\">public IP\u003C\u002Fa>?\u003C\u002Fli>\n\u003Cli>Or maybe you are using a site cache plugin. Then enable the option \u003Ccode>Disable caching a page that contains a shortcode or API call to geo-dependent functions.\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyellowtree\u002Fgeoip-detect\u002Fwiki\u002FTroubleshooting\" rel=\"nofollow ugc\">More Troubleshooting Hints\u003C\u002Fa>\u003C\u002Fp>\n","Provides geographic information detected by an IP adress.",20000,560277,94,59,"2025-10-29T20:59:00.000Z","6.8.5","5.0","7.2.5",[20,21,56,57,58],"ipstack","locator","maxmind","http:\u002F\u002Fwww.yellowtree.de","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgeoip-detect.5.6.1.zip",1,"2025-09-22 00:00:00",{"slug":64,"name":65,"version":66,"author":67,"author_profile":68,"description":69,"short_description":70,"active_installs":11,"downloaded":71,"rating":13,"num_ratings":72,"last_updated":73,"tested_up_to":52,"requires_at_least":74,"requires_php":18,"tags":75,"homepage":18,"download_link":79,"security_score":80,"vuln_count":61,"unpatched_count":26,"last_vuln_date":81,"fetched_at":28},"belingogeo","belingoGeo","1.13.2","Belingo","https:\u002F\u002Fprofiles.wordpress.org\u002Fbelingo\u002F","\u003Cp>The plugin adds the ability to select cities, unique pages are created with a unique url for each city. This allows you to uniqueize content for search engines.\u003C\u002Fp>\n\u003Cp>If for some reason the video is unavailable, you can watch it on \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gTIPR8cmQmM\" rel=\"nofollow ugc\">Youtube\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdzen.ru\u002Fvideo\u002Fwatch\u002F6759510b565b5409ab52b754?share_to=link\" rel=\"nofollow ugc\">Zen\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Frutube.ru\u002Fvideo\u002F0c08cc8493b2893a7c33b2ff5252a1db\u002F\" rel=\"nofollow ugc\">Rutube\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fvkvideo.ru\u002Fvideo-54775454_456239017\" rel=\"nofollow ugc\">VK Video\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Plugin capabilities:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Creating virtual URLs for all WordPress pages and posts\u003C\u002Fli>\n\u003Cli>Ability to combine cities into regions.\u003C\u002Fli>\n\u003Cli>Ability to exclude pages, posts or taxonomies for which there is no need to create a URL\u003C\u002Fli>\n\u003Cli>Pre-made pop-up windows for confirming the found city, as well as for selecting other cities.\u003C\u002Fli>\n\u003Cli>Defining those cities that are not added to the list\u003C\u002Fli>\n\u003Cli>Shortcodes for displaying cities in different cases\u003C\u002Fli>\n\u003Cli>Shortcodes with a phone number and address for each city\u003C\u002Fli>\n\u003Cli>Shortcodes that allow you to add any content, depending on the selected city\u003C\u002Fli>\n\u003Cli>Shortcodes for regions, allowing you to display different content for a group of cities.\u003C\u002Fli>\n\u003Cli>Creating virtual URLs for Woocommerce categories and products\u003C\u002Fli>\n\u003Cli>Support for Yoast.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fproducts\u002Fbelingogeo-pro\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">Extended version of the plugin\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Useful articles:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fustanovka-i-nastrojka-plagina-belingogeo\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">Installing and configuring the plugin\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fkak-sortirovat-goroda-v-plagine-belingogeo\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">How to sort cities in plugin\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fkak-sozdat-dopolnitelnoe-pole-dlya-goroda-v-plagine-belingogeo\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">How to create an additional field for the city in the plugin\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fopisanie-vsex-nastroek-plagina-belingogeo\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">Description of all settings of the BelingoGeo plugin\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fnastrojka-plagina-belingogeo-v-rezhime-poddomenov\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">Setting up the BelingoGeo plugin in the “city in a subdomain” mode\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fbelingo.ru\u002Fopisanie-shortkodov-plagina-belingogeo\u002F?utm_source=wordpress.org&utm_medium=description\" rel=\"nofollow ugc\">Description of shortcodes of the BelingoGeo plugin\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>We are on social networks:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Ft.me\u002Fbelingollc\" rel=\"nofollow ugc\">Telegram channel\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fvk.com\u002Fitbelingo\" rel=\"nofollow ugc\">VK Group\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fdzen.ru\u002Fbelingo\" rel=\"nofollow ugc\">Zen channel\u003C\u002Fa>\u003C\u002Fp>\n","The plugin adds the ability to select cities, unique pages are created with a unique url for each city. This allows you to uniqueize content.",10847,13,"2026-01-22T17:25:00.000Z","5.0.0",[76,77,21,23,78],"geo-target","geo-targeting","targeted-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbelingogeo.1.13.2.zip",98,"2025-05-09 00:00:00",{"slug":23,"name":83,"version":84,"author":85,"author_profile":86,"description":87,"short_description":88,"active_installs":11,"downloaded":89,"rating":90,"num_ratings":91,"last_updated":92,"tested_up_to":93,"requires_at_least":94,"requires_php":18,"tags":95,"homepage":98,"download_link":99,"security_score":100,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"GeoTargeting Lite – WordPress Geolocation","1.3.6.1","Damian","https:\u002F\u002Fprofiles.wordpress.org\u002Ftimersys\u002F","\u003Cp>Based on \u003Ca href=\"http:\u002F\u002Fwww.maxmind.com\u002F?rId=timersys\" rel=\"nofollow ugc\">Maxmind GeoIP2\u003C\u002Fa> data Geo Targeting plugin for WordPress will let you create dynamic content based on your users country.\u003C\u002Fp>\n\u003Cp>With a simple shortcode you will be able to specify which countries are capable of seeing the content.\u003C\u002Fp>\n\u003Cp>Compatible with \u003Ca href=\"https:\u002F\u002Ftimersys.com\u002Fpopups\u002F?utm_source=geot-readme&utm_medium=link&utm_term=popus%20premium&utm_campaign=Popups%20premium\" rel=\"nofollow ugc\">WordPress Popups Plugin\u003C\u002Fa>. You can now geotarget your popups\u003C\u002Fp>\n\u003Cp>If you use popular firewall services such as Cloudflare, Reblaze, Sucuri, Ezoic, Akamai or Clouways the plugin will auto detect real IP from users.\u003C\u002Fp>\n\u003Cp>This plugin it’s a basic version with limited functionality. For a full geo plugin please refer to https:\u002F\u002Fgeotargetingwp.com\u003C\u002Fp>\n\u003Cp>Usage:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[geot country=\"Argentina\"] Messi is the best! [\u002Fgeot]``\n[geot country=\"Portugal\"] Cristiano ronaldo is the best! [\u002Fgeot]``\n[geot exclude_country=\"Portugal\"] This text is seeing by everyone except Portuguese people [\u002Fgeot]``\nCurrent user is located in [geot_country_name]``\nCurrent user country code is [geot_country_code]``\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The plugin save into it’s own cache the country you are in. If you need to test for different countries you have two options:\u003C\u002Fp>\n\u003Cp>You can pass a country iso code in the url like this:\u003Cbr \u002F>\n    http:\u002F\u002Fdemo.com\u002Fsome-page\u002F?geot_debug=US“\u003C\u002Fp>\n\u003Cp>Or you can add in wp-config.php the following to use your own VPN\u003Cbr \u002F>\n    define(‘GEOT_DEBUG’,true);“\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Premium Version\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Check the \u003Cstrong>new premium version\u003C\u002Fstrong> available in (\u003Ca href=\"https:\u002F\u002Fgeotargetingwp.com\u002F?utm_source=geot-readme&utm_medium=link&utm_term=geot%20premium&utm_campaign=Geot%20premium\" rel=\"nofollow ugc\">https:\u002F\u002Fgeotargetingwp.com\u002F\u003C\u002Fa>) that comes with Premium database with much more accuracy.\u003Cbr \u002F>\n  * Geo Redirects\u003Cbr \u002F>\n  * GeoTarget countries, cities and states\u003Cbr \u002F>\n  * Cloudflare geolocation support\u003Cbr \u002F>\n  * Geotarget posts \u002F pages entirely\u003Cbr \u002F>\n  * Create multiple Redirects based on user countries states or cities\u003Cbr \u002F>\n  * Editor button to easily add shortcodes\u003Cbr \u002F>\n  * Create multiple regions (group of countries or cities) to use with shortcodes\u003Cbr \u002F>\n  * Exclude countries, cities and regions shortcode\u003Cbr \u002F>\n  * Dropdown Widget to let users change their country (with flags)\u003Cbr \u002F>\n  * Complete set of PHP functions\u003Cbr \u002F>\n  * Hide Woocommerce or Easy digital downloads products. Works with any plugin\u003Cbr \u002F>\n  * AJAX mode that make plugin compatible with Cache plugins\u003Cbr \u002F>\n  * Geotarget menu items, widgets, everything\u003Cbr \u002F>\n  * Upcoming integration with other populars plugins\u003Cbr \u002F>\n  * Premium support\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch4>WordPress Popups\u003C\u002Fh4>\n\u003Cp>Best popups plugin ever (\u003Ca href=\"https:\u002F\u002Fwppopups.com\u002F?utm_source=wsi-free-plugin&utm_medium=readme\" rel=\"nofollow ugc\">https:\u002F\u002Fwppopups.com\u002F\u003C\u002Fa>)\u003C\u002Fp>\n","GeoTargeting for WordPress will let you country-target your content based on users IP's and Geocountry Ip database",66127,78,32,"2022-08-15T15:56:00.000Z","6.1.10","3.6",[96,76,21,23,97],"cloudflare","wordpress-geotargeting","https:\u002F\u002Ftimersys.com\u002Fgeotargeting\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgeotargeting.1.3.6.1.zip",85,{"slug":102,"name":103,"version":104,"author":105,"author_profile":106,"description":107,"short_description":108,"active_installs":11,"downloaded":109,"rating":110,"num_ratings":111,"last_updated":112,"tested_up_to":113,"requires_at_least":114,"requires_php":18,"tags":115,"homepage":119,"download_link":120,"security_score":100,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"wt-geotargeting","WT GeoTargeting","1.9","Roman Kusty","https:\u002F\u002Fprofiles.wordpress.org\u002Fkustyrt\u002F","\u003Cp>\u003Cstrong>WT Geotargeting\u003C\u002Fstrong> – бесплатный плагин для CMS WordPress, позволяющий с помощью Шорткодов настраивать геотаргетинг на страницах сайта.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Геотаргетинг\u003C\u002Fstrong> – вывод на страницах сайта контента (заголовки, текст, адреса, телефоны и т.д.), соответствующего географическому местоположению посетителя.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fweb-technology.biz\u002Fblog\u002Fgeotargeting-odin-sajt-dlya-vsex-gorodov\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">«Зачем нужен геотаргетинг на сайте?»\u003C\u002Fa> – полезная статья для начинающих разработчиков.\u003C\u002Fp>\n\u003Ch4>Основные возможности плагина:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Геолокация на основе баз IP-адресов «IP Geolocation API», «Sypex Geo», «DaData» или «MaxMind»;\u003C\u002Fli>\n\u003Cli>Определение местоположения посетителей с точностью до страны;\u003C\u002Fli>\n\u003Cli>Определение местоположения посетителей России, Украины и Беларуси с точностью до города;\u003C\u002Fli>\n\u003Cli>Отображение контента с привязкой к местоположению посетителя;\u003C\u002Fli>\n\u003Cli>Отображение местоположения посетителя.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fweb-technology.biz\u002Fcms-wordpress\u002Fplugin-wt-geotargeting-for-cms-wordpress\u002Fbystryj-start\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">Быстрый старт\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Возможности расширенной версии плагина:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Управление регионами и контактными данными регионов в панели администратора;\u003C\u002Fli>\n\u003Cli>Написание названий регионов в различных падежах;\u003C\u002Fli>\n\u003Cli>Изменение заголовков H1 и Title;\u003C\u002Fli>\n\u003Cli>Статические методы (PHP) для настройки геотаргетинга;\u003C\u002Fli>\n\u003Cli>Импорт городов;\u003C\u002Fli>\n\u003Cli>Поддержка поддоменов (субдоменов);\u003C\u002Fli>\n\u003Cli>Добавление разных цен товара WooCommerce.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fweb-technology.biz\u002Fcms-wordpress\u002Fplugin-wt-geotargeting-pro\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">Подробнее о стандарной и расширенной версиях\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Перед настройкой \u003Cstrong>рекомендуем прочитать\u003C\u002Fstrong> нашу статью \u003Ca href=\"http:\u002F\u002Fweb-technology.biz\u002Fprimenenie-geotargetinga-na-sajte\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">«Юзабилити сайта с геотаргетингом»\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Официальная страница плагина:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fweb-technology.biz\u002Fcms-wordpress\u002Fplugin-wt-geotargeting-pro\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">WT Geotargeting\u003C\u002Fa>.\u003Cbr \u002F>\n\u003Cstrong>Документация:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fweb-technology.biz\u002Fcms-wordpress\u002Fplugin-wt-geotargeting-for-cms-wordpress\u002F?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=wt-geotargeting\" rel=\"nofollow ugc\">WT Geotargeting\u003C\u002Fa>.\u003Cbr \u002F>\n\u003Cstrong>Новости и обсуждение Вконтакте:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fvk.com\u002Fagency_web_technology\" rel=\"nofollow ugc\">vk.com\u002Fagency_web_technology\u003C\u002Fa>.\u003C\u002Fp>\n","Гибкая настройка геотаргетинга.",23514,92,20,"2022-11-26T15:54:00.000Z","6.0.11","3.9",[116,117,21,23,118],"dadata","geo","ip-api","https:\u002F\u002Fweb-technology.biz\u002Fcms-wordpress\u002Fplugin-wt-geotargeting","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwt-geotargeting.zip",{"slug":122,"name":123,"version":6,"author":124,"author_profile":125,"description":126,"short_description":127,"active_installs":13,"downloaded":128,"rating":13,"num_ratings":129,"last_updated":130,"tested_up_to":113,"requires_at_least":131,"requires_php":132,"tags":133,"homepage":136,"download_link":137,"security_score":100,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"preenchimento-automatico-cep-brasil","Preenchimento Automatico CEP Brasil","Mestres do WP","https:\u002F\u002Fprofiles.wordpress.org\u002Fmestresdowp\u002F","\u003Cp>Preenchimento automático dos campos de endereço a partir de um CEP\u003C\u002Fp>\n\u003Cp>Utilizamos os serviços tercerizados da API https:\u002F\u002Fviacep.com.br, cujo termos de uso são encontrados no link https:\u002F\u002Fviacep.com.br\u003C\u002Fp>\n","Preenchimento automático dos campos de endereço a partir de um CEP",3926,2,"2022-05-30T09:59:00.000Z","4.7","5.2.4",[20,21,134,135,57],"localizacao","location","http:\u002F\u002Fwww.mestresdowp.com.br\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpreenchimento-automatico-cep-brasil.1.5.zip",{"attackSurface":139,"codeSignals":205,"taintFlows":230,"riskAssessment":251,"analyzedAt":258},{"hooks":140,"ajaxHandlers":197,"restRoutes":198,"shortcodes":199,"cronEvents":204,"entryPointCount":61,"unprotectedCount":26},[141,147,151,157,161,164,169,172,176,180,184,188,190,194],{"type":142,"name":143,"callback":144,"file":145,"line":146},"action","init","exclude_saved_posts","ifso-geolocation.class.php",25,{"type":142,"name":148,"callback":149,"file":145,"line":150},"ifso_extra_sumbenu_items","closure",27,{"type":152,"name":153,"callback":154,"priority":155,"file":145,"line":156},"filter","ifso_dki_types_extension","extend_dki",10,31,{"type":152,"name":158,"callback":159,"file":145,"line":160},"ifso_geo_page_display_extra_tabs","extend_geo_page_tabs",33,{"type":142,"name":162,"callback":162,"file":145,"line":163},"admin_enqueue_scripts",34,{"type":152,"name":165,"callback":166,"priority":167,"file":145,"line":168},"ifso_location_data_override","apply_geo_override",11,36,{"type":152,"name":165,"callback":170,"priority":155,"file":145,"line":171},"geo_override_with_browser_geolocation",37,{"type":152,"name":173,"callback":174,"file":145,"line":175},"ifso_exclude_from_geo","block_geolocation_for_bots",38,{"type":142,"name":177,"callback":178,"file":145,"line":179},"wp_enqueue_scripts","public_enqueue_scripts",39,{"type":142,"name":181,"callback":182,"file":145,"line":183},"wp_footer","request_user_location_on_every_page",41,{"type":142,"name":185,"callback":149,"file":186,"line":187},"plugins_loaded","ifso-geolocation.php",24,{"type":142,"name":189,"callback":149,"file":186,"line":156},"admin_notices",{"type":142,"name":191,"callback":149,"file":192,"line":193},"pre_get_posts","includes\\ifso-geolocation-post-excluder.class.php",35,{"type":142,"name":195,"callback":149,"file":192,"line":196},"template_redirect",46,[],[],[200],{"tag":201,"callback":202,"file":145,"line":203},"ifso_get_browser_location","request_browser_location",40,[],{"dangerousFunctions":206,"sqlUsage":207,"outputEscaping":209,"fileOperations":14,"externalRequests":61,"nonceChecks":26,"capabilityChecks":61,"bundledLibraries":229},[],{"prepared":26,"raw":26,"locations":208},[],{"escaped":171,"rawEcho":210,"locations":211},8,[212,215,216,219,221,223,225,227],{"file":213,"line":129,"context":214},"admin\\markup\\location-override\\location_override_generator_page_display.php","raw output",{"file":213,"line":32,"context":214},{"file":217,"line":218,"context":214},"ifso-geolocation-addon-settings.class.php",67,{"file":217,"line":220,"context":214},131,{"file":217,"line":222,"context":214},149,{"file":145,"line":224,"context":214},127,{"file":145,"line":226,"context":214},196,{"file":145,"line":228,"context":214},201,[],[231],{"entryPoint":232,"graph":233,"unsanitizedCount":26,"severity":250},"\u003Cgeo_analysis_tool_page_display> (admin\\markup\\geo_analysis_tool_page_display.php:0)",{"nodes":234,"edges":247},[235,241],{"id":236,"type":237,"label":238,"file":239,"line":240},"n0","source","$_GET (x2)","admin\\markup\\geo_analysis_tool_page_display.php",15,{"id":242,"type":243,"label":244,"file":239,"line":245,"wp_function":246},"n1","sink","echo() [XSS]",70,"echo",[248],{"from":236,"to":242,"sanitized":249},true,"low",{"summary":252,"deductions":253},"The \"if-so-geolocation\" v1.5 plugin exhibits a generally strong security posture based on the provided static analysis. The absence of any known CVEs and a history free of vulnerabilities is a positive indicator. The code analysis reveals good practices such as 100% prepared SQL statements and a high rate of output escaping (82%). The limited attack surface, with only one shortcode as an entry point and no unprotected AJAX handlers or REST API routes, further contributes to its security. However, there are areas for improvement. The plugin lacks nonce checks entirely, which is a significant concern for any user-facing functionality, especially if the shortcode interacts with user-submitted data or triggers actions on the frontend that could be manipulated. While the taint analysis shows no unsanitized paths, the absence of nonce checks could still allow for cross-site request forgery (CSRF) attacks if the shortcode's output is not handled carefully.",[254,256],{"reason":255,"points":155},"Missing nonce checks",{"reason":257,"points":14},"Limited output escaping (18% not escaped)","2026-03-16T18:51:48.515Z",{"wat":260,"direct":276},{"assetPaths":261,"generatorPatterns":268,"scriptPaths":269,"versionParams":270},[262,263,264,265,266,267],"\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fcss\u002Flocation-override-generator.css","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Fsortable.min.js","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Fdrag-table.js","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Ftemplate-editor.js","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Flocation-override-generator.js","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fassets\u002Fimg\u002Fflags\u002F",[],[263,264,265,266],[271,272,273,274,275],"\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fcss\u002Flocation-override-generator.css?ver=","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Fsortable.min.js?ver=","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Fdrag-table.js?ver=","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Ftemplate-editor.js?ver=","\u002Fwp-content\u002Fplugins\u002Fif-so-geolocation\u002Fadmin\u002Fassets\u002Fjs\u002Flocation-override-generator.js?ver=",{"cssClasses":277,"htmlComments":280,"htmlAttributes":282,"restEndpoints":287,"jsGlobals":288,"shortcodeOutput":292},[278,279],"ifso-special-error","ifso-country-flag",[281],"\u003C!-- geo page -->",[283,284,285,286],"data-countrycode","data-postid","data-geotype","data-geoactionid",[],[289,290,291],"ifso_geo_override_cookie_name","ifso_browser_location_cookie_name","ifso_request_browser_location_cookie_name",[293],"[ifso_get_browser_location]"]