{"id":171404,"date":"2023-03-12T09:42:16","date_gmt":"2023-03-12T09:42:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/if-so-geolocation-extension\/"},"modified":"2025-12-11T21:50:08","modified_gmt":"2025-12-11T21:50:08","slug":"if-so-geolocation","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/if-so-geolocation\/","author":15364067,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5","stable_tag":"1.5","tested":"6.9.4","requires":"4.0.1","requires_php":"","requires_plugins":null,"header_name":"If-So Geolocation","header_author":"If So Plugin","header_description":"Bop Beep Boop","assets_banners_color":"442e79","last_updated":"2025-12-11 21:50:08","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.if-so.com\/location-based-content-wordpress-plugin\/?utm_source=WordPressGeo&utm_medium=Readme&utm_campaign=Donate%20link","header_plugin_uri":"","header_author_uri":"http:\/\/www.if-so.com\/","rating":5,"author_block_rating":0,"active_installs":1000,"downloads":20594,"num_ratings":4,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"ifso","date":"2023-05-14 08:57:25"},"1.2":{"tag":"1.2","author":"ifso","date":"2023-11-20 19:32:28"},"1.3":{"tag":"1.3","author":"ifso","date":"2024-02-28 08:27:10"},"1.4":{"tag":"1.4","author":"ifso","date":"2024-03-21 14:28:19"},"1.4.1":{"tag":"1.4.1","author":"ifso","date":"2025-04-27 05:43:52"},"1.5":{"tag":"1.5","author":"ifso","date":"2025-12-11 21:50:08"}},"upgrade_notice":{"":"<p>The extensions requires the core If-So plugin in order to work<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":4},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2878625,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2878625,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2879012,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2879012,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.2","1.3","1.4","1.4.1","1.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3205984,"resolution":"1","location":"assets","locale":""},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3205984,"resolution":"10","location":"assets","locale":""},"screenshot-11.gif":{"filename":"screenshot-11.gif","revision":3205984,"resolution":"11","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3205984,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3205984,"resolution":"3","location":"assets","locale":""},"screenshot-4.gif":{"filename":"screenshot-4.gif","revision":3205984,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3205984,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3205984,"resolution":"6","location":"assets","locale":""},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3205984,"resolution":"7","location":"assets","locale":""},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3205984,"resolution":"8","location":"assets","locale":""},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3205984,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"Works with all page builder users - No coding required","2":"Location-based Elementor Elements","3":"Location-based Gutenberg Blocks","4":"Geolocation RedirectsBuilt-in","5":"Target by continent, country, state, city, and timezone.","6":"Built-in stats","7":"Geolocation Dynamic Keyword Insertion (DKI) shortcodes","8":"User location selection (location override)","9":"Compatible with caching plugins","10":"Use the HTML5 Geolocation API and\/or IP-to-location to detect the user's location.","11":"Create a trigger, select a condition, and paste the trigger's shortcode wherever you want to display the geotargeted content."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2493,4124,218950,4169,218949],"plugin_category":[],"plugin_contributors":[133591],"plugin_business_model":[],"class_list":["post-171404","plugin","type-plugin","status-publish","hentry","plugin_tags-geoip","plugin_tags-geolocation","plugin_tags-geolocation-redirect","plugin_tags-geotargeting","plugin_tags-location-based-content","plugin_contributors-ifso","plugin_committers-ifso"],"banners":{"banner":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/banner-772x250.png?rev=2879012","banner_2x":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/banner-1544x500.png?rev=2879012","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/icon-128x128.png?rev=2878625","icon_2x":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/icon-256x256.png?rev=2878625","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-1.png?rev=3205984","caption":"Works with all page builder users - No coding required"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-2.jpg?rev=3205984","caption":"Location-based Elementor Elements"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-3.jpg?rev=3205984","caption":"Location-based Gutenberg Blocks"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-4.gif?rev=3205984","caption":"Geolocation RedirectsBuilt-in"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-5.jpg?rev=3205984","caption":"Target by continent, country, state, city, and timezone."},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-6.png?rev=3205984","caption":"Built-in stats"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-7.jpg?rev=3205984","caption":"Geolocation Dynamic Keyword Insertion (DKI) shortcodes"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-8.jpg?rev=3205984","caption":"User location selection (location override)"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-9.jpg?rev=3205984","caption":"Compatible with caching plugins"},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-10.jpg?rev=3205984","caption":"Use the HTML5 Geolocation API and\/or IP-to-location to detect the user's location."},{"src":"https:\/\/ps.w.org\/if-so-geolocation\/assets\/screenshot-11.gif?rev=3205984","caption":"Create a trigger, select a condition, and paste the trigger's shortcode wherever you want to display the geotargeted content."}],"raw_content":"<!--section=description-->\n<p>Create location-based content in minutes. No coding required. Works with any page builder. No need to sync an IP-to-location database.<\/p>\n\n<p>This plugin enhances the Geolocation capabilities of the core <a href=\"https:\/\/wordpress.org\/plugins\/if-so\/\">If-So Dynamic Content plugin<\/a>:<\/p>\n\n<ul>\n<li>HTML5 Geolocation API (browser location) - Can be used in addition to or instead of the IP-to-location service.<\/li>\n<li>Location override - Allow users to manually select their location and override the default IP-based location detection.<\/li>\n<li>Display the user's country flag (image or emoji).<\/li>\n<li>Log geolocation requests and analyze the log to find and exclude bot traffic.<\/li>\n<\/ul>\n\n<h3>WHY IF-SO?<\/h3>\n\n<ul>\n<li>Show dynamic content based on City, State, Country, Continent, or Time zoneSimple to use - No coding is required<\/li>\n<li>Geolocation DKi<\/li>\n<li>No need to sync with an IP-to-location database<\/li>\n<li>Works with any page builder<\/li>\n<li>100% compatible with all caching plugins (no need to disable the cache)<\/li>\n<li>A simple way to improve engagement and conversion rates<\/li>\n<li>Conditional Gutenberg Blocks and Elementor Widgets<\/li>\n<li>Create location-based pop-ups<\/li>\n<li>Built-in stats system<\/li>\n<\/ul>\n\n<p>.....................................................................<\/p>\n\n<h3>HOW IT WORKS<\/h3>\n\n<p><strong>Select a condition &gt;&gt; Set a version of content to be displayed if it is met.<\/strong><\/p>\n\n<h4>All page builder users<\/h4>\n\n<ol>\n<li>Create a trigger.<\/li>\n<li>Select a condition and set the personalized content version.<\/li>\n<li>Optional - create more dynamic versions and set the default content.<\/li>\n<li>Paste the shortcode wherever you want to display the content.\nWhenever a page with the shortcode is loaded, one of the content versions will be displayed accordingly.<\/li>\n<\/ol>\n\n<p><a href=\"https:\/\/www.if-so.com\/help\/documentation\/how-to-create-dynamic-content-trigger\/?utm_source=WordPressGeo&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=dynamic-trigger\">Learn more &gt;&gt;<\/a><\/p>\n\n<h4>Gutenberg and Elementor users<\/h4>\n\n<ol>\n<li>Select the block or element.<\/li>\n<li>On the side menu, select the condition to display the block\/element.<\/li>\n<\/ol>\n\n<p><a href=\"https:\/\/www.if-so.com\/elementor-personalization\/?utm_source=WordPressGeo&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=elementor\"> - More about conditional  Elementor Elements &gt;&gt;<\/a>\n<a href=\"https:\/\/www.if-so.com\/conditional-gutenberg-blocks\/?utm_source=WordPressGeo&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=gutenberg\"> - More about conditional  Gutenberg Blocks &gt;&gt;<\/a><\/p>\n\n<p>.....................................................................<\/p>\n\n<h3>HTML5 Geolocation API (browser location)<\/h3>\n\n<p>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\u2019s 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).<\/p>\n\n<p>The drawback of this approach is that it necessitates the user\u2019s consent to share their location.<\/p>\n\n<p>The HTML5 Geolocation API method can be used in addition to or instead of the IP-to-location service.<\/p>\n\n<p><a href=\"https:\/\/www.if-so.com\/the-html-geolocation-api\/?utm_source=WordPress&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=html5_api\">- More about the HTML5 Geolocation API.<\/a><\/p>\n\n<h3>LOCATION OVERRIDE (MANUAL USER LOCATION SELECTION)<\/h3>\n\n<p>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.<\/p>\n\n<p><a href=\"https:\/\/www.if-so.com\/dynamic-select-form\/manual-user-location-selection\/\"> - More about the Location Override option &gt;&gt;<\/a><\/p>\n\n<h3>LOG GEOLOCATION REQUESTS<\/h3>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p><a href=\"https:\/\/www.if-so.com\/faq-items\/the-geolocation-session-count-doesnt-seem-to-behave-as-expected\/\"> - More about logging geolocation requests &gt;&gt;<\/a>\n.....................................................................<\/p>\n\n<h3>Use cases and examples<\/h3>\n\n<ul>\n<li>Display the user\u2019s country flag<\/li>\n<li>Highlight different products in specific locations<\/li>\n<li>Show reviews in the visitor\u2019s language<\/li>\n<li>Display the time of an event in the user\u2019s time zone (auto-local time display)<\/li>\n<li>Set up a conditional redirect<\/li>\n<li>Redirect all .com pages to corresponding pages on the local version of the site<\/li>\n<li>Allow users to manually set their location (location override)<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/www.if-so.com\/dynamic-content\/examples\/?category_filter%5B%5D=%7B%22cat%22%3A564%2C%22subcat%22%3A565%7D&amp;category_filter%5B%5D=%7B%22cat%22%3A517%2C%22subcat%22%3A518%7D&amp;apply_filter=\">More usage examples &gt;&gt;<\/a><\/p>\n\n<p>.....................................................................<\/p>\n\n<h3>Built-in stats<\/h3>\n\n<p>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.<\/p>\n\n<p>.....................................................................<\/p>\n\n<h3>DYNAMIC KEYWORD INSERTION (DKI)<\/h3>\n\n<p>The Dynamic Keyword Insertion (DKI) option allows you to display values using shortcodes:\nDisplaying the user's country:<\/p>\n\n<p><strong>Insert the user\u2019s country:<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='country' fallback='' ajax='yes']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s state:<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='state' fallback='' ajax='yes']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s city:<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='city' fallback='' ajax='yes']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s continent:<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='continent' fallback='' ajax='yes']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s time zone:<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='timezone' fallback='' ajax='yes']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s country flag (image):<\/strong><\/p>\n\n<pre><code>[ifsoDKI ajax='yes' type='geo' show='flag' width='50px']\n<\/code><\/pre>\n\n<p><strong>Insert the user\u2019s country flag (emoji):<\/strong><\/p>\n\n<pre><code>[ifsoDKI type='geo' show='emoji-flag']\n<\/code><\/pre>\n\n<p><a href=\"https:\/\/www.if-so.com\/geolocation-dki\/?utm_source=WordPressGeo&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=geo-dki\">More Geolocation DKI shortcode options &gt;&gt;<\/a><\/p>\n\n<p><strong>The Auto-Local Time Display shortcode<\/strong>\nDisplay the event time auto-adjusted to the user's time zone.<\/p>\n\n<pre><code>[ifsoDKI type='time' show='user-geo-timezone-sensitive' time='04\/25\/2024 08:00' format='n\/j\/o, G:i']\n<\/code><\/pre>\n\n<p><a href=\"https:\/\/www.if-so.com\/auto-local-time-display\/?utm_source=WordPressGeo&amp;utm_medium=Readme&amp;utm_campaign=v2&amp;utm_term=local-time-display-dki\">More about the Auto-Local Time Display Shortcode &gt;&gt;<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure you have the <a href=\"https:\/\/wordpress.org\/plugins\/if-so\/\">core If-So plugin <\/a>installed on your site<\/li>\n<li>Go to your WordPress Control Panel<\/li>\n<li>Click \"Plugins\", then \"Add New\"<\/li>\n<li>Enter \"If-So Geolocation\" as a search term and click \"Search Plugins\"<\/li>\n<li>Download and install the plugin<\/li>\n<li>Click the \"Activate Plugin\" link<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20if-so%20work%20with%20any%20page%20builder%3F'><h3>Does If-So work with any page builder?<\/h3><\/dt>\n<dd><p>Yes, If-So works on every website, regardless of the page builder you are using.<\/p><\/dd>\n<dt id='what%20content%20can%20be%20customized%20with%20if-so%3F'><h3>What content can be customized with If-So?<\/h3><\/dt>\n<dd><p>If-So allows you to customize any element on the website, including titles, texts, images, videos, menu items, and design.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5<\/h4>\n\n<ul>\n<li>Added new feature \u2013 hide posts by geolocation<\/li>\n<li>UI improvements<\/li>\n<li>Geo request log \u2013 added request URL to the log<\/li>\n<li>Bug fixes<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>WordPress 6.5 compatibility<\/li>\n<li>Bug fixes<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>WordPress 6.4 compatibility<\/li>\n<\/ul>\n\n<p>= 1.2=\n* Added the option to \"block bots\" (can be activated in the settings) (learn more).\n* The geolocation request log and analyzer tool now include user-agent data, making it easier to detect and block bots. User agents can be blocked by passing an array of user-agent values to the filter \"ifso_block_bots_extra_blocked_user_agents\" (User-agent will be blocked if its text contains the value)\n* Flag DKI Shortcode: Added a \"classname\" attribute, allowing users to add classes to the rendered element.\nEx. [ifsoDKI type='geo' show='flag' width='50px' classname='class-you-choose']\n* Location override improvements: Added the option to display flags near the country labels in a selection form.\n* Location override improvements: Country DKI shortcode is now affected by the override functionality.\n* Location override page caching compatibility: The form can now be loaded using Ajax.\n* Added the ability to whitelist users from the geolocation \u201cBlock bots\u201d mode based on IP, cookie, or by using the geo service in the same way blacklisting is done, but with the \"ifso_geo_whitelist\" filter instead.\n* Allow blocking users from the geolocation service based on the results of custom functions (user role, login status).\n* UI improvements.\n* Bug fixes.<\/p>\n\n<p>= 1.1=\n* Added a location override finctionlaity \n* Added a location override selection form generator<\/p>\n\n<p>= 1.0=\n* User country flag image DKI  - use the shortcode Display the user's country flag using \n* Log all geolocation requests.\n* Auto-analyze the geolocation log to find bots (IPs that belong to data centers that used the service more than 15 times)<\/p>","raw_excerpt":"All-in-one geolocation. Personalized content, geolocation Dynamic Keyword Insertion shortcodes, Rediects, and more. No coding required!","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/171404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=171404"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ifso"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=171404"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=171404"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=171404"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=171404"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=171404"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=171404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}