{"id":24091,"date":"2013-07-04T07:43:02","date_gmt":"2013-07-04T07:43:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/geoip-detect\/"},"modified":"2025-10-29T20:59:20","modified_gmt":"2025-10-29T20:59:20","slug":"geoip-detect","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/geoip-detect\/","author":12603037,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"5.6.1","stable_tag":"5.6.1","tested":"6.8.5","requires":"5.0","requires_php":"7.2.5","requires_plugins":null,"header_name":"Geolocation IP Detection","header_author":"Yellow Tree (Benjamin Pick)","header_description":"","assets_banners_color":"ffff01","last_updated":"2025-10-29 20:59:20","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.com\/cgi-bin\/webscr?cmd=_s-xclick&hosted_button_id=BSYUZHS8FH3CL","header_plugin_uri":"http:\/\/www.yellowtree.de","header_author_uri":"http:\/\/www.yellowtree.de","rating":4.7,"author_block_rating":0,"active_installs":20000,"downloads":562307,"num_ratings":59,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.8":{"tag":"1.8","author":"benjamin4","date":"2014-12-02 16:23:50"},"2.10.0":{"tag":"2.10.0","author":"benjamin4","date":"2019-02-22 20:20:10"},"2.11.0":{"tag":"2.11.0","author":"benjaminpick","date":"2019-04-11 18:13:16"},"2.11.1":{"tag":"2.11.1","author":"benjamin4","date":"2019-07-13 13:53:13"},"2.12.0":{"tag":"2.12.0","author":"benjaminpick","date":"2019-09-11 10:10:46"},"2.12.1":{"tag":"2.12.1","author":"benjaminpick","date":"2019-11-01 10:37:53"},"2.13.0":{"tag":"2.13.0","author":"benjamin4","date":"2019-12-02 14:42:50"},"2.5.3":{"tag":"2.5.3","author":"benjamin4","date":"2015-10-15 17:43:24"},"2.5.4":{"tag":"2.5.4","author":"benjamin4","date":"2015-12-03 16:48:22"},"2.5.6":{"tag":"2.5.6","author":"benjamin4","date":"2016-02-05 16:34:28"},"2.5.7":{"tag":"2.5.7","author":"benjamin4","date":"2016-03-29 08:44:24"},"2.6.0":{"tag":"2.6.0","author":"benjamin4","date":"2016-09-30 18:36:23"},"2.7.0":{"tag":"2.7.0","author":"benjamin4","date":"2017-03-17 10:25:51"},"2.8.0":{"tag":"2.8.0","author":"benjamin4","date":"2017-10-12 12:29:41"},"2.8.2":{"tag":"2.8.2","author":"benjamin4","date":"2018-01-13 08:42:51"},"2.9.0":{"tag":"2.9.0","author":"benjamin4","date":"2018-07-24 11:11:26"},"2.9.1":{"tag":"2.9.1","author":"benjaminpick","date":"2018-11-21 13:35:49"},"2.9.2":{"tag":"2.9.2","author":"benjaminpick","date":"2018-12-04 07:51:45"},"3.0":{"tag":"3.0","author":"benjamin4","date":"2019-12-30 15:49:57"},"3.0.1":{"tag":"3.0.1","author":"benjamin4","date":"2020-01-08 14:07:11"},"3.0.2":{"tag":"3.0.2","author":"benjamin4","date":"2020-03-26 16:14:12"},"3.0.3":{"tag":"3.0.3","author":"benjamin4","date":"2020-03-27 11:48:47"},"3.0.3.1":{"tag":"3.0.3.1","author":"benjamin4","date":"2020-03-31 07:27:24"},"3.0.4":{"tag":"3.0.4","author":"benjamin4","date":"2020-05-05 15:52:40"},"3.1.0":{"tag":"3.1.0","author":"benjamin4","date":"2020-06-26 15:51:01"},"3.1.1":{"tag":"3.1.1","author":"benjamin4","date":"2020-08-10 08:33:28"},"3.1.2":{"tag":"3.1.2","author":"benjamin4","date":"2020-11-04 18:37:45"},"3.2.0":{"tag":"3.2.0","author":"benjamin4","date":"2020-11-26 15:56:56"},"3.2.1":{"tag":"3.2.1","author":"benjamin4","date":"2020-12-02 14:52:07"},"3.3.0":{"tag":"3.3.0","author":"benjamin4","date":"2020-12-15 12:41:41"},"4.0.0":{"tag":"4.0.0","author":"benjamin4","date":"2021-03-02 16:35:01"},"4.0.1":{"tag":"4.0.1","author":"benjamin4","date":"2021-03-02 20:44:55"},"4.1.0":{"tag":"4.1.0","author":"benjamin4","date":"2021-03-11 09:35:24"},"4.2.0":{"tag":"4.2.0","author":"benjamin4","date":"2021-07-16 08:17:58"},"4.2.1":{"tag":"4.2.1","author":"benjamin4","date":"2021-07-19 07:33:59"},"4.2.2":{"tag":"4.2.2","author":"benjamin4","date":"2021-07-19 09:44:05"},"4.2.3":{"tag":"4.2.3","author":"benjamin4","date":"2021-07-26 09:10:54"},"5.0.0":{"tag":"5.0.0","author":"benjamin4","date":"2022-01-07 15:11:33"},"5.1.0":{"tag":"5.1.0","author":"benjamin4","date":"2022-10-27 09:10:59"},"5.1.1":{"tag":"5.1.1","author":"benjamin4","date":"2022-10-27 16:03:16"},"5.2.0":{"tag":"5.2.0","author":"benjaminpick","date":"2023-03-02 19:09:46"},"5.2.1":{"tag":"5.2.1","author":"benjamin4","date":"2023-04-01 14:24:12"},"5.2.2":{"tag":"5.2.2","author":"benjamin4","date":"2023-04-01 14:58:05"},"5.3.0":{"tag":"5.3.0","author":"benjaminpick","date":"2023-08-14 08:30:56"},"5.3.1":{"tag":"5.3.1","author":"benjaminpick","date":"2023-08-17 16:31:22"},"5.3.2":{"tag":"5.3.2","author":"benjaminpick","date":"2023-12-11 16:53:32"},"5.4.0":{"tag":"5.4.0","author":"benjaminpick","date":"2024-07-04 15:29:47"},"5.4.1":{"tag":"5.4.1","author":"benjaminpick","date":"2024-08-17 09:33:44"},"5.5.0":{"tag":"5.5.0","author":"benjaminpick","date":"2025-02-01 11:53:26"},"5.6.0":{"tag":"5.6.0","author":"benjaminpick","date":"2025-10-29 20:34:52"},"5.6.1":{"tag":"5.6.1","author":"benjaminpick","date":"2025-10-29 20:59:20"}},"upgrade_notice":{"5.6.1":"<p>This update removes the deprecated shortcode [geoip_detect ...] (read the changelog for more details)<\/p>","5.5.0":"<p>When using the default datasource &quot;hostip.info&quot;, the region code (i.e. CA) is now correctly moved to the property <code>mostSpecificSubdivision<\/code> (previously, it was part of the property <code>city<\/code>)<\/p>","5.0.0":"<p>If you are using AJAX mode, please read the changelog.<\/p>"},"ratings":{"1":3,"2":1,"3":0,"4":0,"5":55},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":978998,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":978998,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":744455,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.8","2.10.0","2.11.0","2.11.1","2.12.0","2.12.1","2.13.0","2.5.3","2.5.4","2.5.6","2.5.7","2.6.0","2.7.0","2.8.0","2.8.2","2.9.0","2.9.1","2.9.2","3.0","3.0.1","3.0.2","3.0.3","3.0.3.1","3.0.4","3.1.0","3.1.1","3.1.2","3.2.0","3.2.1","3.3.0","4.0.0","4.0.1","4.1.0","4.2.0","4.2.1","4.2.2","4.2.3","5.0.0","5.1.0","5.1.1","5.2.0","5.2.1","5.2.2","5.3.0","5.3.1","5.3.2","5.4.0","5.4.1","5.5.0","5.6.0","5.6.1"],"block_files":[],"assets_screenshots":{"screenshot-2.png":{"filename":"screenshot-2.png","revision":3386679,"resolution":"2","location":"plugin"},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3386679,"resolution":"1","location":"plugin"}},"screenshots":{"1":"Lookup page (under Tools &gt; Geolocation Lookup)","2":"Options page (under Preferences &gt; Geolocation IP Detection)"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2493,4124,183518,8611,4130],"plugin_category":[49],"plugin_contributors":[80089],"plugin_business_model":[],"class_list":["post-24091","plugin","type-plugin","status-publish","hentry","plugin_tags-geoip","plugin_tags-geolocation","plugin_tags-ipstack","plugin_tags-locator","plugin_tags-maxmind","plugin_category-maps-and-location","plugin_contributors-benjaminpick","plugin_committers-benjaminpick"],"banners":{"banner":"https:\/\/ps.w.org\/geoip-detect\/assets\/banner-772x250.jpg?rev=744455","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geoip-detect\/assets\/icon-128x128.jpg?rev=978998","icon_2x":"https:\/\/ps.w.org\/geoip-detect\/assets\/icon-256x256.jpg?rev=978998","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/geoip-detect\/trunk\/screenshot-1.png?rev=3386679","caption":"Lookup page (under Tools &gt; Geolocation Lookup)"},{"src":"https:\/\/ps.w.org\/geoip-detect\/trunk\/screenshot-2.png?rev=3386679","caption":"Options page (under Preferences &gt; Geolocation IP Detection)"}],"raw_content":"<!--section=description-->\n<p>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 &amp; country names are translated in different languages (<a href=\"https:\/\/dev.maxmind.com\/geoip\/geoip2\/web-services\/#Languages-8\">supported languages<\/a>).<\/p>\n\n<h4>Features:<\/h4>\n\n<ul>\n<li>You can use one of these data sources (see <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#which-data-source-should-i-choose\">comparison<\/a>):\n\n<ul>\n<li>Free (default source): <a href=\"http:\/\/www.hostip.info\/\">HostIP.info<\/a> (IPv4 only)<\/li>\n<li>Free with registration: <a href=\"http:\/\/dev.maxmind.com\/geoip\/geoip2\/geolite2\/\">Maxmind GeoIP2 Lite City<\/a>, automatically updated weekly<\/li>\n<li>Commercial: <a href=\"https:\/\/www.maxmind.com\/en\/geoip2-country-database\">Maxmind GeoIP2 City<\/a> or <a href=\"https:\/\/www.maxmind.com\/en\/geoip2-city\">Maxmind GeoIP2 Country<\/a><\/li>\n<li>Commercial Web-API: <a href=\"https:\/\/www.maxmind.com\/en\/geoip2-precision-services\">Maxmind GeoIP2 Precision<\/a> (City, Country or Insights)<\/li>\n<li>Hosting-Provider dependent: <a href=\"https:\/\/support.cloudflare.com\/hc\/en-us\/articles\/200168236-What-does-CloudFlare-IP-Geolocation-do-\">Cloudflare<\/a> or <a href=\"https:\/\/aws.amazon.com\/blogs\/aws\/enhanced-cloudfront-customization\/\">Amazon AWS CloudFront<\/a> (Country)<\/li>\n<li>Free or Commercial Web-API: <a href=\"https:\/\/ipstack.com\">Ipstack<\/a><\/li>\n<li>Commercial Web-API via AWS Marketplace: <a href=\"https:\/\/aws.amazon.com\/marketplace\/pp\/prodview-k5gjowexrefl2\">Fastah<\/a><\/li>\n<\/ul><\/li>\n<li>Provides these 5 functions (see <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-PHP\">API Documentation<\/a>):\n\n<ul>\n<li><code>geoip_detect2_get_info_from_ip($ip, $locales = array('en'), $options = array())<\/code>: Lookup Geo-Information of the specified IP<\/li>\n<li><code>geoip_detect2_get_info_from_current_ip($locales = array('en'), $options = array())<\/code>: Lookup Geo-Information of the current website user<\/li>\n<li><code>geoip_detect2_get_current_source_description(...)<\/code>: Return a human-readable label of the currently chosen source.<\/li>\n<li><code>geoip_detect2_get_external_ip_adress()<\/code>: Fetch the internet adress of the webserver<\/li>\n<li><code>geoip_detect2_get_client_ip()<\/code>: Get client IP (even if it is behind a reverse proxy)<\/li>\n<\/ul><\/li>\n<li>For the property names, see the results of a specific IP in the wordpress backend (under <em>Tools &gt; Geolocation IP Detection<\/em>).<\/li>\n<li>You can include these properties into your posts and pages by using the shortcode <code>[geoip_detect2 property=\"country.name\" default=\"(country could not be detected)\" lang=\"en\"]<\/code> (where 'country.name' can be one of the other property names as well, and 'default' and 'lang' are optional).<\/li>\n<li>You can show or hide content by using a shortcode <code>[geoip_detect2_show_if country=\"FR, DE\" not_city=\"Berlin\"]TEXT[\/geoip_detect2_show_if]<\/code>. See <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-Shortcodes#show-or-hide-content-depending-on-the-location\">Shortcode Documentation<\/a>.<\/li>\n<li>When enabled on the options page, it adds CSS classes to the body tag such as <code>geoip-province-HE<\/code>, <code>geoip-country-DE<\/code> and <code>geoip-continent-EU<\/code>.<\/li>\n<li>If you are using a page cache, it is recommended to use the AJAX mode (see <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-AJAX\">AJAX<\/a>)<\/li>\n<li>When enabled on the options page, the client IP respects a reverse proxy of the server.<\/li>\n<li>If you are using <a href=\"https:\/\/wordpress.org\/plugins\/contact-form-7\/\">Contact Form 7<\/a>, you can use these shortcodes:\n\n<ul>\n<li>A select input with all countries, the detected country being selected by default: <code>[geoip_detect2_countries mycountry]<\/code><\/li>\n<li>A text input that is pre-filled with the detected city (or other property): <code>[geoip_detect2_text_input city property:city lang:fr id:id class:class default:Paris]<\/code><\/li>\n<li>Geolocation information for the email text: <code>[geoip_detect2_user_info]<\/code><\/li>\n<\/ul><\/li>\n<li>If you are using <a href=\"https:\/\/wordpress.org\/plugins\/wpforms-lite\/\">WP Forms<\/a>, you can use this shortcode:\n\n<ul>\n<li>Geolocation information for the email text: <code>[geoip_detect2_user_info]<\/code><\/li>\n<\/ul><\/li>\n<li>Together with <a href=\"https:\/\/wordpress.org\/plugins\/svg-flags-lite\/\">SVG Flags<\/a> you can show the flag of the detected country: <code>[geoip_detect2_current_flag]<\/code> (see <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-Shortcodes#add-a-flag-of-the-visitors-country\">documentation<\/a>)<\/li>\n<\/ul>\n\n<p>See <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\">Documentation<\/a> for more info.<\/p>\n\n<h4>How can I use these functions?<\/h4>\n\n<ul>\n<li>You could choose the currency of the store based on the country name<\/li>\n<li>You could pre-fill the shipping country<\/li>\n<li>You could show the store nearest to your customer<\/li>\n<li>You show or hide content specific to a geographic target group<\/li>\n<li>Etc. ... You tell me! I'm rather curious what you'll do with this plugin!<\/li>\n<li>Be careful to comply to the applicable laws. For example Regulation (EU) 2018\/302 ...<\/li>\n<li>If you need to get the user's timezone, it is more accurate to use JS solutions.<\/li>\n<\/ul>\n\n<p><strong>System Requirements<\/strong>: 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 .<\/p>\n\n<p><em>GDPR: See <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#is-this-plugin-gdpr-compliant\">Is this plugin GDPR-compliant?<\/a><\/em><\/p>\n\n<p><em>This extension is \"charity-ware\". If you are happy with it, please <a href=\"https:\/\/www.paypal.com\/cgi-bin\/webscr?cmd=_s-xclick&amp;hosted_button_id=BSYUZHS8FH3CL\">leave a tip<\/a> for the benefit of <a href=\"http:\/\/www.jmem-hainichen.de\/homepage\">this charity<\/a>. (See <a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#what-you-mean-by-this-plugin-is-charity-ware\">FAQ<\/a> for more infos.)<\/em><\/p>\n\n<p><em><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/blob\/master\/CONTRIBUTING.md\">Here are other ways to contribute to the development of this plugin.<\/a><\/em><\/p>\n\n<p><em>This product can provide GeoLite2 data created by MaxMind, available from http:\/\/www.maxmind.com.<\/em><\/p>\n\n<h3>Troubleshooting<\/h3>\n\n<ul>\n<li>Does <code>geoip_detect2_get_info_from_current_ip()<\/code> return the same country, regardless of where you are visiting the site from? <\/li>\n<li>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 <a href=\"https:\/\/www.whatismyip.com\/\">public IP<\/a>?<\/li>\n<li>Or maybe you are using a site cache plugin. Then enable the option <code>Disable caching a page that contains a shortcode or API call to geo-dependent functions.<\/code><\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/Troubleshooting\">More Troubleshooting Hints<\/a><\/p>\n\n<!--section=installation-->\n<ul>\n<li>Install the plugin<\/li>\n<li>Go to the plugin's option page and choose a data source.<\/li>\n<li>Test it by clicking on \"Lookup\" on the lookup page.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#technically-speaking-how-could-i-verify-if-my-visitor-comes-from-germany\">Technically speaking, how could I verify if my visitor comes from Germany?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#how-can-i-show-text-only-if-the-visitor-is-coming-from-germany\">How can I show text only if the visitor is coming from Germany?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#how-can-i-add-the-current-country-name-as-text-in-my-page\">How can I add the current country name as text in my page?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#which-data-source-should-i-choose\">Which data source should I choose?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#can-i-change-the-time-period-how-long-the-data-is-cached\">Can I change the time period how long the data is cached?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#the-maxmind-lite-databases-are-restricted-by-an-eula-can-i-host-a-form-where-users-can-look-up-the-geographic-information-of-an-ip\">The Maxmind Lite databases are restricted by an EULA. Can I host a form where users can look-up the geographic information of an IP?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#does-this-plugin-work-in-a-multisite-network-environment\">Does this plugin work in a MultiSite-Network environment?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#is-this-plugin-gdpr-compliant\">Is this plugin GDPR-compliant?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#what-does-privacy-exclusions-mean\">What does \"Privacy Exclusions\" mean?<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/FAQ#what-do-you-mean-by-this-plugin-is-charity-ware\">What do you mean by \"This plugin is charity-ware\"?<\/a><\/p>\n<dl>\n<dt id='further%20documentation'><h3>Further documentation<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-PHP\">PHP Functions<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API%3A-AJAX\">JS Functions for AJAX mode<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-Shortcodes\">Shortcodes<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-Shortcodes-for-Contact-Form-7\">Shortcodes for Contact Form 7<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/Record-Properties\">Record Properties<\/a><\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API-Usage-Examples\">API usage examples<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>5.6.1<\/h4>\n\n<ul>\n<li>FIX [!]: Remove deprecated shortcode [geoip_detect] (Security - CVE-2025-57993). If you are still using it, use [geoip_detect2 ...] instead, you might have to change the property name.<\/li>\n<li>FIX: Compatibility with Wordpress 6.7 (Textdomain loading)<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<p>(5.6.0 was not released)<\/p>\n\n<h4>5.5.0<\/h4>\n\n<ul>\n<li>FIX [!]: In the datasource \"hostip.info\", the region code (i.e. CA) is now correctly moved to the property <code>mostSpecificSubdivision<\/code> (previously, it was part of the property <code>city<\/code>)<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.4.1<\/h4>\n\n<ul>\n<li>NEW: JS now emit events 'geoip-detect-shortcodes-done' and 'geoip-detect-body-classes-done', see https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-AJAX#events<\/li>\n<li>FIX: Remove Fatal Error in check_requirements (\"Undefined constand GEOIP_DETECT_DEBUG\")<\/li>\n<\/ul>\n\n<h4>5.4.0<\/h4>\n\n<ul>\n<li>NEW: Infos can be added to a mail sent by WPForms (with Smart Tag <code>{geoip_detect2_user_info}<\/code>)<\/li>\n<li>FIX: Remove Fatal Error on uninstall (\"Undefined constand GEOIP_DETECT_DEBUG\")<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.3.2<\/h4>\n\n<ul>\n<li>FIX: Some country codes such as \"PT\" were missing in the (deprecated) legacy API mapping.<\/li>\n<li>FIX: Maxmind compatibility does not show a notice anymore when the plugin folder is non-standard (e.g. due to symlinks) or the Filename ends with Reader.php<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.3.1<\/h4>\n\n<ul>\n<li>FIX: Respect JS file variant<\/li>\n<li>UI: Show selected file variant in backend options<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.3.0<\/h4>\n\n<ul>\n<li>NEW: You can now specify to use a JS file variant if you are only using a subset of the features (see https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API:-AJAX#js-variants) <\/li>\n<li>Note[!]: frontend.js has now been renamed to frontend_full.js<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.2.2<\/h4>\n\n<ul>\n<li>FIX: The format for new Maxmind licence keys has changed. (Existing licence keys will continue to work.)\n(5.2.1 was a broken release)<\/li>\n<\/ul>\n\n<h4>5.2.0<\/h4>\n\n<ul>\n<li>NEW: The list of reverse proxies of AWS CloudFront or CloudFlare can now be added as \"known proxy\"<\/li>\n<li>FIX [!]: AWS Cloudfront header name changed to HTTP_CLOUDFRONT_VIEWER_COUNTRY<\/li>\n<li>Reduced JS size (AJAX mode)<\/li>\n<li>Library updates<\/li>\n<\/ul>\n\n<h4>5.1.1<\/h4>\n\n<ul>\n<li>NEW: For the reverse proxy configuration, internal adresses (such as 10.0.0.0\/8) are now whitelisted by default. You can override this behaviour by using the wordpress filter <code>geoip_detect2_client_ip_whitelist_internal_ips<\/code>.<\/li>\n<li>NEW: Body classes now include the city name in English (e.g. geoip-city-Munich)<\/li>\n<li>FIX: Some server configurations showed this warning: Use of undefined constant CURL_HTTP_VERSION_2_0<\/li>\n<\/ul>\n\n<h4>5.1.0<\/h4>\n\n<p>New Datasource: Fastah Web API (beta), see https:\/\/aws.amazon.com\/marketplace\/pp\/prodview-k5gjowexrefl2<\/p>\n\n<p>AJAX mode:\n* NEW: The JS function <code>geoip_detect.set_override_with_merge<\/code> can modify the override record in one property, merging it with the currently saved property<\/p>\n\n<p>Other minor changes:\n* FIX: In non-AJAX mode, properties such as \"extra.original.zip\" can be accessed again\n* FIX: Automatic download of Maxmind database now also works when the temp folder is group\/world writeable (as in AWS configurations)\n* If you want to enable more Warnings (e.g. while debugging), you can add <code>define('GEOIP_DETECT_DEBUG', true)<\/code> to your wp-config.php or so.\n* Library updates<\/p>\n\n<h4>5.0.0<\/h4>\n\n<p>In this release, there a small breaking changes marked by [!].<\/p>\n\n<p>AJAX mode:\n* FIX [!]: Empty attribute values such as <code>[geoip_detect2_show_if country=\"\"]Country was not detected[\/geoip_detect2_show_if]<\/code> are now working (they were ignored before)\n* FIX [!]: Shortcodes that have an invalid value for the property <code>ajax<\/code> (e.g. <code>[geoip_detect2_text_input ajax=\"invalid\"]<\/code>) are now using the AJAX option instead of always disabling AJAX\n* FIX: In CF7, the country selector can now be used in AJAX mode\n* FIX: In AJAX mode, the shortcode <code>[geoip_detect2_show_if]<\/code> renders as a <code>&lt;div&gt;<\/code> if it detects that the containing content has HTML block level elements\n* NEW (Beta): In AJAX mode, the new property <code>autosave<\/code> saves the user input as local override for this browser. <code>[geoip_detect2_countries mycountry autosave]<\/code> and <code>[geoip_detect2_text_input city property:city autosave]<\/code>. (Please give feedback if this works as expected!)\n* FIX: In AJAX mode, calling the method <code>set_override(record, duration_in_days)<\/code> now refreshes the AJAX shortcodes and CSS body classes.\n-&gt; Thus, it is now possible to quickly implement different content for different countries with an autodetected default country, see https:\/\/github.com\/yellowtree\/geoip-detect\/wiki\/API-Usage-Examples#country-selector-that-can-be-overridden-by-the-user<\/p>\n\n<p>Other changes:\n* NEW: Drastically improving performance if the lookup is performed for the current IP more than once (e.g. because of shortcodes without AJAX mode)\n* UI: Showing the time for the subsequent lookup on the Test Lookup page\n* FIX: Maxmind Datasource: Check if the database file is really a file, not a directory\n* NEW: Header Datasource: Now a custom HTTP header can be used via the wordpress filter <code>geoip_detect2_source_header_http_key<\/code><\/p>\n\n<p>Other minor changes:\n* Update the list of available APIs for getting the external IP (as whatismyip went down)\n* Minimum Wordpress version is 5.4 now. \n* Update some internal libraries &amp; dev tools\n* Checked compatibility with PHP 8.1<\/p>\n\n<p>The code of the plugin has not changed much, I have named this version 3.0 to indicate the major change on Maxmind's side of things. They explain it in this blog post:\nhttps:\/\/blog.maxmind.com\/2019\/12\/18\/significant-changes-to-accessing-and-using-geolite2-databases\/<\/p>\n\n<p><a href=\"https:\/\/github.com\/yellowtree\/geoip-detect\/blob\/master\/CHANGELOG.md\">Older changelog<\/a><\/p>","raw_excerpt":"Provides geographic information detected by an IP adress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/24091","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=24091"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/benjaminpick"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=24091"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=24091"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=24091"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=24091"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=24091"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=24091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}