{"id":198122,"date":"2024-08-04T16:08:59","date_gmt":"2024-08-04T16:08:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/live-user-ip-and-location\/"},"modified":"2025-10-26T04:07:13","modified_gmt":"2025-10-26T04:07:13","slug":"live-user-ip-and-location","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/live-user-ip-and-location\/","author":22025911,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"1.1.0","tested":"6.8.5","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Live User IP and Location","header_author":"obedullah","header_description":"Get live user IP and Location information of the user to display everywhere in the website where you want.","assets_banners_color":"f2f2f1","last_updated":"2025-10-26 04:07:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/obedullah\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1360,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"obedullah","date":"2024-08-04 16:08:28"},"1.0.1":{"tag":"1.0.1","author":"obedullah","date":"2025-02-09 13:35:02"},"1.1.0":{"tag":"1.1.0","author":"obedullah","date":"2025-10-26 04:07:13"}},"upgrade_notice":{"1.1.0":"<p>This update adds Cache TTL configuration and an IP anonymization option. No existing shortcode names or core option names were removed; settings remain backward-compatible. After upgrading, review the IP anonymization toggle if your workflows rely on full IP data.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3130666,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3252275,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.0.1","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3130666,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3130666,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Settings page: API Key input, Test button, Cache TTL selector, and IP anonymization toggle.","2":"Shortcodes reference grid.","3":"Example front-end usage of shortcodes."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4124,249736,230318,177160,32038],"plugin_category":[49],"plugin_contributors":[230319],"plugin_business_model":[],"class_list":["post-198122","plugin","type-plugin","status-publish","hentry","plugin_tags-geolocation","plugin_tags-ipapi","plugin_tags-live-ip","plugin_tags-user-ip","plugin_tags-user-location","plugin_category-maps-and-location","plugin_contributors-obedullah","plugin_committers-obedullah"],"banners":{"banner":"https:\/\/ps.w.org\/live-user-ip-and-location\/assets\/banner-772x250.png?rev=3252275","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/live-user-ip-and-location\/assets\/icon-256x256.png?rev=3130666","icon_2x":"https:\/\/ps.w.org\/live-user-ip-and-location\/assets\/icon-256x256.png?rev=3130666","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/live-user-ip-and-location\/assets\/screenshot-1.png?rev=3130666","caption":"Settings page: API Key input, Test button, Cache TTL selector, and IP anonymization toggle."},{"src":"https:\/\/ps.w.org\/live-user-ip-and-location\/assets\/screenshot-2.png?rev=3130666","caption":"Shortcodes reference grid."}],"raw_content":"<!--section=description-->\n<p>Live User IP and Location integrates with ipapi.co to fetch visitor geolocation and network data and provides shortcodes to display that data anywhere on your site.<\/p>\n\n<p>Key features:\n* Robust server-side IP detection using common headers.\n* Optional IP anonymization to mask the most specific part of the IP (IPv4 and IPv6).\n* Per-IP transient caching with configurable TTL to reduce external API calls.\n* Admin settings page with API Key Test (AJAX + nonce + capability checks).\n* 29 shortcodes to output IP and location data fields.\n* Safe and standards-compliant implementation with i18n support.<\/p>\n\n<h3>Third-Party Services<\/h3>\n\n<p>This plugin uses the ipapi.co service to provide geolocation data. By using this plugin you agree to the ipapi.co terms of use and privacy policy:\n* https:\/\/ipapi.co\/terms\/\n* https:\/\/ipapi.co\/privacy\/<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Place any of the provided shortcodes in posts, pages, or widgets to display IP or location data. Example shortcodes:\n[luipl_ip], [luipl_network], [luipl_version], [luipl_city], [luipl_region], [luipl_region_code], [luipl_country], [luipl_country_name], [luipl_country_code], [luipl_country_code_iso3], [luipl_country_capital], [luipl_country_tld], [luipl_continent_code], [luipl_in_eu], [luipl_postal], [luipl_latitude], [luipl_longitude], [luipl_timezone], [luipl_utc_offset], [luipl_country_calling_code], [luipl_currency], [luipl_currency_name], [luipl_languages], [luipl_country_area], [luipl_country_population], [luipl_asn], [luipl_org], [luipl_all_fields]<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support and further information, visit https:\/\/profiles.wordpress.org\/obedullah\/ or open a support thread on the WordPress plugin page.<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPL v3 or later. For more information, see https:\/\/www.gnu.org\/licenses\/gpl-3.0.html.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>This plugin uses the IP geolocation service provided by IPAPI (https:\/\/ipapi.co\/). Thanks to IPAPI for providing geolocation data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/live-user-ip-and-location<\/code> directory or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to the plugin settings page (IP Location), enter your ipapi API key and click Save Changes.<\/li>\n<li>Optionally enable IP anonymization for privacy compliance and choose your Cache TTL.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='what%20does%20ip%20anonymization%20do%3F'><h3>What does IP anonymization do?<\/h3><\/dt>\n<dd><p>When enabled, the plugin partially masks the visitor's IP address before sending it to ipapi. For IPv4 the last octet is zeroed (for example: 192.168.1.123 \u2192 192.168.1.0). For IPv6 it truncates after the first blocks to reduce identifiability. This reduces storage of personally identifiable information and helps with privacy compliance such as GDPR.<\/p><\/dd>\n<dt id='do%20i%20need%20an%20api%20key%3F'><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>Yes. Register at https:\/\/ipapi.co\/free\/ to receive a free API key via email and paste it into the plugin settings page.<\/p><\/dd>\n<dt id='how%20does%20caching%20work%3F'><h3>How does caching work?<\/h3><\/dt>\n<dd><p>Location responses are stored in a transient keyed per-IP and API key to reduce repeated external requests. You can configure the TTL (time-to-live) on the settings page.<\/p><\/dd>\n<dt id='can%20i%20style%20the%20shortcode%20output%3F'><h3>Can I style the shortcode output?<\/h3><\/dt>\n<dd><p>Yes. Shortcode output is plain HTML\/text so you can target it with your theme or custom CSS.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added Cache TTL selector to configure transient lifetime.<\/li>\n<li>Added IP anonymization toggle for privacy compliance.<\/li>\n<li>Added API Key Test button (admin AJAX with nonce and capability checks).<\/li>\n<li>Improved IP detection and validation; supports common reverse proxy headers.<\/li>\n<li>Implemented per-IP transient caching and per-request static caching to avoid duplicate external calls.<\/li>\n<li>Moved admin CSS and JS into assets and enqueued only on the plugin settings page.<\/li>\n<li>Improved sanitization, escaping, and i18n for all admin strings.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Tested compatibility with WordPress and PHP versions.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Display visitor IP and location using ipapi.co with caching, API test, TTL control, and optional IP anonymization.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/198122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=198122"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/obedullah"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=198122"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=198122"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=198122"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=198122"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=198122"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=198122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}