[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fXI_rksK1B-gIY0DNxHLXpFBVqYhGkLHEDOb_HqoMfGo":3,"$ftSlJJ9k0lvWKgsH_8ahI77MBWc3Ui04lEXqNPCbyiM0":268,"$fF1Rn0CrY8ls6ruT_SYeDP6ASXLdv_tjfaAqy0JZXuuE":272},{"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":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"discovery_status":31,"vulnerabilities":32,"developer":33,"crawl_stats":29,"alternatives":37,"analysis":145,"fingerprints":251},"wp-geoposts","WP GeoPosts","1.0","fyaconiello","https:\u002F\u002Fprofiles.wordpress.org\u002Ffyaconiello\u002F","\u003Ch4>Features\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Adds \u003Ccode>location\u003C\u002Fcode>, \u003Ccode>latitude\u003C\u002Fcode>, and \u003Ccode>longitude\u003C\u002Fcode> meta + metaboxes to any content type.\u003C\u002Fli>\n\u003Cli>Provides an easy to use interface for selecting which content types to apply the above meta values. \u003Cem>Note: this allows selection of built in types: page and post as well as any registered custom post types.\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>Provides \u003Ccode>WP_GeoQuery\u003C\u002Fcode> an extended \u003Ccode>WP_Query\u003C\u002Fcode> class for doing distance based and geo-aware queries.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Coming Soon!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Add support for \u003Ccode>within radius\u003C\u002Fcode> option to WP_GeoQuery\u003C\u002Fli>\n\u003Cli>HTML5 geolocation of visitors, with a fallback to \u003Ccode>Change Location\u003C\u002Fcode> (stored as COOKIE)\u003C\u002Fli>\n\u003Cli>Custom Markers by post type.\u003C\u002Fli>\n\u003Cli>Shortags for:\n\u003Cul>\n\u003Cli>\u003Ccode>Get Directions\u003C\u002Fcode> link (utilizing Google Maps)\u003C\u002Fli>\n\u003Cli>Static Map – show one or more posts on a static map\u003C\u002Fli>\n\u003Cli>Dynamic Map – show one or more posts on a dynamic map\u003C\u002Fli>\n\u003Cli>Option to show radius as overlay (for \u003Ccode>within radius\u003C\u002Fcode> calls)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","A simple Wordpress plugin for adding geographic data to posts.",40,2850,100,1,"2012-08-20T20:32:00.000Z","3.4.2","3.0","",[20,21,22,23,24],"distance","distance-search","geo","location","metabox","http:\u002F\u002Ffyaconiello.github.com\u002Fwp-geo-posts\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-geoposts.zip",85,0,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":27,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},30,84,"2026-05-20T00:16:42.641Z",[38,58,74,101,126],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":13,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":56,"download_link":57,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"wp-geo-search","WP Geo search","0.1","jhackett1","https:\u002F\u002Fprofiles.wordpress.org\u002Fjhackett1\u002F","\u003Cp>A plugin to add location-aware geographical search to \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Freference\u002Fclasses\u002Fwp_query\u002F\" rel=\"nofollow ugc\">WP_Query\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>You can use it to power location-aware apps, such as showing a user results near them.\u003C\u002Fp>\n\u003Ch3>🔎 Using it in a query\u003C\u002Fh3>\n\u003Cp>Adding a \u003Ccode>geo_query\u003C\u002Fcode> parameter to WP_Query will add a “distance” column to the returned results, provided they have the right metadata.\u003C\u002Fp>\n\u003Cp>You can then display this in your templates.\u003C\u002Fp>\n\u003Cp>You can use a location search parameter, which will be \u003Ca href=\"#geocoding\" rel=\"nofollow ugc\">geocoded\u003C\u002Fa> or directly provide latitude and longitude values:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$query = new WP_Query(array(\n    \"geo_query\" => array(\n            \"location\" => \"London\"\n    )\n))\n\n$query = new WP_Query(array(\n    \"geo_query\" => array(\n            \"latitude\" => -52.005,\n            \"longitude\" => 0.005,\n    )\n))\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Optionally, you can then filter by search radius.\u003C\u002Fp>\n\u003Cp>By default, distances are given in miles. You can provide \u003Ccode>\"units\" => \"km\"\u003C\u002Fcode> if you need kilometres.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$query = new WP_Query(array(\n    \"geo_query\" => array(\n            \"latitude\" => -52.005,\n            \"longitude\" => 0.005,\n            \"radius\" => 10\n    )\n))\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or order by nearness:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$query = new WP_Query(array(\n    \"geo_query\" => array(\n            \"latitude\" => -52.005,\n            \"longitude\" => 0.005\n    ),\n    \"orderby\" => \"geo\"\n))\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Displaying distance in templates\u003C\u002Fh3>\n\u003Cp>In a \u003Ccode>WP_Query\u003C\u002Fcode> loop that includes a \u003Ccode>geo_query\u003C\u002Fcode>, you can use two extra functions to show distance away:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>jhgs_get_the_distance(object $post)\u003C\u002Fcode> – which returns a rounded integer for the distance away, similar to \u003Ccode>get_the_title()\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>jhgs_the_distance(string $less_than_one, string $one, string $more_than_one)\u003C\u002Fcode> – which displays an approximate human-readable string, similar to \u003Ccode>the_title()\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>jhgs_the_distance will show one of three messages depending on whether the rounded distance is less than one, one, or greater than one. By default these are:\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>“Less than a mile away”\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>“About a mile away”\u003C\u002Fli>\n\u003Cli>“About %s miles away”\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If you need to use different units or translations, can pass three \u003Ca href=\"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Ffunction.printf.php\" rel=\"nofollow ugc\">printf-formatted\u003C\u002Fa> strings to \u003Ccode>jhgs_the_distance()\u003C\u002Fcode> to override these messages. Put \u003Ccode>%s\u003C\u002Fcode> where you want the value.\u003C\u002Fp>\n\u003Cp>If you need the \u003Cem>exact\u003C\u002Fem>, unrounded value, you can use \u003Ccode>$post->distance\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Geocoding\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fnominatim.org\u002F\" rel=\"nofollow ugc\">Nominatim\u003C\u002Fa>‘s service is used for geocoding location searches.\u003C\u002Fp>\n\u003Cp>Using it is subject to an \u003Ca href=\"https:\u002F\u002Foperations.osmfoundation.org\u002Fpolicies\u002Fnominatim\u002F\" rel=\"nofollow ugc\">acceptable use policy\u003C\u002Fa> – if you use case will involve lots of API calls, you should replace it with a paid alternative, like \u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Fgeocoding\u002Foverview\" rel=\"nofollow ugc\">Google\u003C\u002Fa>‘s.\u003C\u002Fp>\n\u003Ch3>📍 Populating latitude and longitude data\u003C\u002Fh3>\n\u003Cp>It looks for two \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Farticle\u002Fcustom-fields\u002F\" rel=\"ugc\">custom field\u003C\u002Fa> values with the keys \u003Ccode>latitude\u003C\u002Fcode> and \u003Ccode>longitude\u003C\u002Fcode> on your posts.\u003C\u002Fp>\n\u003Cp>It’s agnostic about how you supply this data. The simplest thing to do is type it in using WordPress’s built-in custom field editor.\u003C\u002Fp>\n\u003Cp>You could also hook into the \u003Ccode>save_post\u003C\u002Fcode> action to populate meta whenever you create or change a post, by adding a snippet like this to your theme’s \u003Ccode>functions.php\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function example_update_latlngs($post){\n    $location = get_field(\"location\", $post);\n    if(isset($location)){\n        update_post_meta($post, \"longitude\", $location[\"lng\"]);\n        update_post_meta($post, \"latitude\", $location[\"lat\"]);\n    }\n}\n\nadd_action(\"save_post\", \"example_update_latlngs\", 10, 3);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This example assumes you are using an \u003Ca href=\"https:\u002F\u002Fwww.advancedcustomfields.com\u002Fresources\u002Fgoogle-map\u002F\" rel=\"nofollow ugc\">ACF Google Map\u003C\u002Fa> field called “location”, but the data could come from anywhere, including a custom meta box you code yourself, so long as the post meta keys are right.\u003C\u002Fp>\n\u003Ch3>Bulk-updating existing posts\u003C\u002Fh3>\n\u003Cp>If you have many posts that you need to add longitude and latitude meta to in bulk, you could add something like this to \u003Ccode>functions.php\u003C\u002Fcode>, which will run on \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Freference\u002Fhooks\u002Fafter_switch_theme\u002F\" rel=\"nofollow ugc\">theme activation\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function example_update_all_latlngs(){\n    $query = new WP_Query(array(\n        \"posts_per_page\" => -1\n    ));\n    foreach($query->get_posts() as $post){\n        \u002F\u002F Function from above\n        example_update_latlngs($post);\n    }\n}\n\nadd_action('after_switch_theme', 'example_update_all_latlngs');\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Add location-aware geographical search to WP_Query. You can use it to power location-aware apps, such as showing a user results near them.",70,1602,2,"2021-09-06T13:29:00.000Z","5.8.0","4.0","7.0",[20,22,54,23,55],"haversine","nominatim","https:\u002F\u002Fgithub.com\u002Fjhackett1\u002Fwp-geo-search","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-geo-search.zip",{"slug":59,"name":60,"version":6,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":28,"num_ratings":28,"last_updated":67,"tested_up_to":16,"requires_at_least":68,"requires_php":18,"tags":69,"homepage":72,"download_link":73,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"travel-rates-based-on-geo-location","Travel Rates based on geo location","indiainfotech.com","https:\u002F\u002Fprofiles.wordpress.org\u002Findiainfotechcom\u002F","\u003Cp>This plugin get the distance of the source and the destination address with the help of google map api and then apply the appropriate rate. This plugin uses ajax functionality\u003C\u002Fp>\n\u003Ch3>Shortcode\u003C\u002Fh3>\n\u003Cp>Use shortcode in anywhere in your pages, posts or widget. [ratecalculator]\u003C\u002Fp>\n","This plugin gets the distance from the source and destination address with the google map api. and then apply the appropriate rate.",10,8973,"2012-09-12T14:09:00.000Z","3.4.1",[70,71],"geo-location-distance-and-rates","rates-calculator","http:\u002F\u002Fwww.indiainfotech.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftravel-rates-based-on-geo-location.1.0.1.zip",{"slug":75,"name":76,"version":77,"author":78,"author_profile":79,"description":80,"short_description":81,"active_installs":82,"downloaded":83,"rating":84,"num_ratings":85,"last_updated":86,"tested_up_to":87,"requires_at_least":88,"requires_php":89,"tags":90,"homepage":96,"download_link":97,"security_score":98,"vuln_count":99,"unpatched_count":28,"last_vuln_date":100,"fetched_at":30},"wp-slimstat","SlimStat Analytics","5.4.9","VeronaLabs","https:\u002F\u002Fprofiles.wordpress.org\u002Fveronalabs\u002F","\u003Cp>Track returning customers and registered users, monitor Javascript events, detect intrusions, analyze email campaigns. Thousands of WordPress sites are already using it.\u003C\u002Fp>\n\u003Ch4>Main Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Real-Time Access Log\u003C\u002Fstrong>: measure server latency, track page events, keep an eye on your bounce rate and much more.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Admin Bar Stats\u003C\u002Fstrong>: view real-time site stats directly from the WordPress admin bar — online visitors, pageviews, and top pages at a glance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcodes\u003C\u002Fstrong>: display reports in widgets or directly in posts and pages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customize Reports\u003C\u002Fstrong>: Customize all pages—Real-time, Overview, Audience, Site Analysis, and Traffic Sources—to fit your needs easily!\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GDPR\u003C\u002Fstrong>: fully compliant with GDPR European law. Integrates seamlessly with WP Consent API. Consent banner translatable with WPML and Polylang.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Filters\u003C\u002Fstrong>: exclude users from statistics collection based on various criteria, including user roles, common robots, IP subnets, admin pages, country, etc.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Export to Excel\u003C\u002Fstrong>: download your reports as CSV files, generate user heatmaps or get daily emails right in your mailbox (via Pro).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cache\u003C\u002Fstrong>: compatible with W3 Total Cache, WP SuperCache, CloudFlare and most caching plugins.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy\u003C\u002Fstrong>: hash IP addresses to protect your users’ privacy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Geolocation\u003C\u002Fstrong>: identify your visitors by city and country, browser type and operating system (courtesy of \u003Ca href=\"https:\u002F\u002Fwww.maxmind.com\u002F\" rel=\"nofollow ugc\">MaxMind\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fbrowscap.org\" rel=\"nofollow ugc\">Browscap\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>World Map\u003C\u002Fstrong>: see where your visitors are coming from, even on your mobile device (courtesy of \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F10bestdesign\u002Fjqvmap\" rel=\"nofollow ugc\">JQVMap\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Pro Pack Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Network Analytics\u003C\u002Fstrong>: Enable a network-wide view of your reports and settings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email Reports\u003C\u002Fstrong>: Receive your reports directly in your mailbox with customizable column mappings and HTML tables.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Export to Excel\u003C\u002Fstrong>: Download your reports as CSV files.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Heatmap\u003C\u002Fstrong>: Display a heatmap layer of the most clicked areas on your website.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User Overview\u003C\u002Fstrong>: Monitor your registered users by tracking their activities and time on site.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User Avatars\u003C\u002Fstrong>: Gravatar integration in the User Overview report for quick visitor identification.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>MaxMind Integration\u003C\u002Fstrong>: Connect to MaxMind’s Geolocation API to retrieve detailed information about your visitors.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom DB\u003C\u002Fstrong>: Use an external database to store all the information about your visitors.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Extended Overview\u003C\u002Fstrong>: Add custom columns to the User Overview widget and export file.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.6+\u003C\u002Fli>\n\u003Cli>PHP 7.4+\u003C\u002Fli>\n\u003Cli>MySQL 5.0.3+\u003C\u002Fli>\n\u003Cli>At least 5 MB of free web space (240 MB if you plan on using the external libraries for geolocation and browser detection)\u003C\u002Fli>\n\u003Cli>At least 10 MB of free DB space\u003C\u002Fli>\n\u003Cli>At least 32 Mb of free PHP memory for the tracker (peak memory usage)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Please note\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>If you decide to uninstall Slimstat Analytics, all the stats will be \u003Cstrong>PERMANENTLY\u003C\u002Fstrong> deleted from your database. Make sure to setup a database backup (wp_slim_*) to avoid losing your data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Report Bugs\u003C\u002Fh4>\n\u003Cp>Having trouble with a bug? Please \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\u002Fissues\u002Fnew\" rel=\"nofollow ugc\">create an issue\u003C\u002Fa> on GitHub. Kindly note that \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> is exclusively for bug reports; other inquiries will be closed.\u003C\u002Fp>\n\u003Cp>For security vulnerabilities, please report them through the \u003Ca href=\"https:\u002F\u002Fpatchstack.com\u002Fdatabase\u002Fwordpress\u002Fplugin\u002Fwp-slimstat\u002Fvdp\" rel=\"nofollow ugc\">Patchstack Vulnerability Disclosure Program\u003C\u002Fa>. The Patchstack team will validate, triage, and handle any security issues.\u003C\u002Fp>\n","The leading web analytics plugin for WordPress",80000,7116699,96,817,"2026-04-03T17:44:00.000Z","6.9.4","5.6","7.4",[91,92,93,94,95],"analytics","geolocation","reports","statistics","tracking","https:\u002F\u002Fwp-slimstat.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.9.zip",88,24,"2026-03-18 00:00:00",{"slug":102,"name":103,"version":104,"author":105,"author_profile":106,"description":107,"short_description":108,"active_installs":109,"downloaded":110,"rating":111,"num_ratings":112,"last_updated":113,"tested_up_to":114,"requires_at_least":115,"requires_php":116,"tags":117,"homepage":122,"download_link":123,"security_score":124,"vuln_count":14,"unpatched_count":28,"last_vuln_date":125,"fetched_at":30},"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,563102,94,59,"2025-10-29T20:59:00.000Z","6.8.5","5.0","7.2.5",[118,92,119,120,121],"geoip","ipstack","locator","maxmind","http:\u002F\u002Fwww.yellowtree.de","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgeoip-detect.5.6.1.zip",99,"2025-09-22 00:00:00",{"slug":127,"name":128,"version":129,"author":130,"author_profile":131,"description":132,"short_description":133,"active_installs":109,"downloaded":134,"rating":84,"num_ratings":135,"last_updated":136,"tested_up_to":87,"requires_at_least":137,"requires_php":52,"tags":138,"homepage":143,"download_link":144,"security_score":13,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"woocommerce-product-price-based-on-countries","Price Based on Country for WooCommerce","4.2.2","Oscar Gare","https:\u002F\u002Fprofiles.wordpress.org\u002Foscargare\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.pricebasedcountry.com\u002Fdocs\u002F?utm_medium=banner&utm_campaign=upgrade-pro&utm_source=wordpress\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwww.pricebasedcountry.com\u002Fpricing\u002F?utm_medium=banner&utm_campaign=upgrade-pro&utm_source=wordpress\" rel=\"nofollow ugc\">Upgrade to Pro\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.pricebasedcountry.com\u002F?utm_medium=banner&utm_campaign=upgrade-pro&utm_source=wordpress\" rel=\"nofollow ugc\">Price Based on Country for WooCommerce\u003C\u002Fa> allows you to define country-specific prices for your WooCommerce products, either in a single currency or across multiple currencies.\u003C\u002Fp>\n\u003Cp>The plugin is designed for stores that sell internationally and need greater control over how prices are presented to customers across regions. You can adapt your pricing strategy to reflect local markets and currencies.\u003C\u002Fp>\n\u003Ch3>KEY FEATURES\u003C\u002Fh3>\n\u003Cp>The core plugin is 100% free. It provides all functionality needed to sell internationally with localized pricing.\u003C\u002Fp>\n\u003Cp>✔️ \u003Cstrong>Multi-Currency\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Add multi-currency support to WooCommerce to enable selling products in multiple currencies and reduce checkout friction.\u003C\u002Fp>\n\u003Cp>✔️ \u003Cstrong>Geolocation\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The plugin detects the country of the website visitor automatically through the geolocation feature included in WooCommerce and displays the price and currency you have defined previously for this country. Compatible with cache plugins.\u003C\u002Fp>\n\u003Cp>✔️  \u003Cstrong>Manual Fixed Price\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Leave the price to be calculated using the exchange rate, or set a fixed price manually for each country or region.\u003C\u002Fp>\n\u003Cp>✔️  \u003Cstrong>Country Switcher Widget\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Add a country switcher to your store to let users manually change their country.\u003C\u002Fp>\n\u003Cp>✔️  \u003Cstrong>Multilingual Ready\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Compatible with WPML and Polylang workflows (sync data between product translations).\u003C\u002Fp>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Cp>Prices are organized into pricing zones, each one associated with one or more countries. For each zone, you can choose a currency.\u003C\u002Fp>\n\u003Cp>You may rely on automatic currency conversion using exchange rates, or define fixed prices manually for full control.\u003C\u002Fp>\n\u003Cp>Once configured, prices are displayed dynamically based on the customer’s country, while remaining compatible with caching and performance plugins.\u003C\u002Fp>\n\u003Ch3>Use Cases\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Boost international sales\u003C\u002Fstrong> – Display price in local currency to reduce checkout friction and cart abandonment.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Regional strategy\u003C\u002Fstrong> – Adjust prices based on regional purchasing power.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Absorb shipping costs\u003C\u002Fstrong> – Set higher prices for countries with expensive shipping without scaring away local customers.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Keeping profit\u003C\u002Fstrong> – Maintain consistent margins across international markets.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Price Based on Country PRO\u003C\u002Fh3>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fwww.pricebasedcountry.com\u002Fpricing\u002F?utm_medium=banner&utm_campaign=upgrade-pro&utm_source=wordpress\" rel=\"nofollow ugc\">PRO version\u003C\u002Fa> extends the core functionality with features that save time, automate tasks, and provide integration with professional plugins.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic Exchange Rate Updates\u003C\u002Fstrong> – The daily automatic update of the exchange rate allows prices to stay in sync without manual intervention.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Pretty prices\u003C\u002Fstrong> – Converted prices can be rounded to clean values, helping maintain a professional appearance across currencies (e.g., 19.99 instead of 19.43).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Currency Symbol\u003C\u002Fstrong> – Display the prices as USD 99.99, US$ 99.99, …\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Updates from file\u003C\u002Fstrong> – Save hours of manual work by updating the product prices in bulk using the CSV import or “WP All Import” integration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Support for Manual Orders\u003C\u002Fstrong> – Update the order with the regional price from the administration panel.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Additional Shortcodes and Widgets\u003C\u002Fstrong> – Display custom content based on the user’s country or the price of a specific product in a pricing table with the PRO shortcodes.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Exclusive Compatibilities and Integrations\u003C\u002Fstrong> – The PRO version adds compatibility with several WooCommerce.com extensions, including \u003Cem>WooCommerce Subscriptions by Woo\u003C\u002Fem>, \u003Cem>Product Bundles for WooCommerce by Woo\u003C\u002Fem>, \u003Cem>Product Add-Ons for WooCommerce by Woo\u003C\u002Fem>, and other professional extensions like \u003Cem>German Market by Marketpress\u003C\u002Fem> or \u003Cem>WP All Import\u003C\u002Fem>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.pricebasedcountry.com\u002Fproduct-tour\u002Ffree-vs-pro\u002F?utm_medium=banner&utm_campaign=upgrade-pro&utm_source=wordpress\" rel=\"nofollow ugc\">\u003Cstrong>Free vs PRO full comparison\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\n","Product Pricing and Currency based on Shopper's Country for WooCommerce with multi-currency support and geolocation to boost international sales.",1300337,262,"2026-03-05T10:30:00.000Z","3.8",[139,92,140,141,142],"country-based-pricing","multi-currency","price-by-country","woocommerce","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce-product-price-based-on-countries\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwoocommerce-product-price-based-on-countries.4.2.2.zip",{"attackSurface":146,"codeSignals":182,"taintFlows":214,"riskAssessment":242,"analyzedAt":250},{"hooks":147,"ajaxHandlers":178,"restRoutes":179,"shortcodes":180,"cronEvents":181,"entryPointCount":28,"unprotectedCount":28},[148,152,155,158,161,166,168,172,175],{"type":149,"name":150,"callback":150,"priority":65,"file":151,"line":34},"filter","posts_fields","query.php",{"type":149,"name":153,"callback":153,"priority":65,"file":151,"line":154},"posts_join",31,{"type":149,"name":156,"callback":156,"priority":65,"file":151,"line":157},"posts_where",32,{"type":149,"name":159,"callback":159,"priority":65,"file":151,"line":160},"posts_orderby",33,{"type":162,"name":163,"callback":163,"file":164,"line":165},"action","init","wp_geo_posts.php",39,{"type":162,"name":167,"callback":167,"file":164,"line":11},"admin_init",{"type":162,"name":169,"callback":170,"file":164,"line":171},"admin_menu","add_menu",41,{"type":162,"name":173,"callback":173,"file":164,"line":174},"save_post",165,{"type":162,"name":176,"callback":176,"file":164,"line":177},"add_meta_boxes",179,[],[],[],[],{"dangerousFunctions":183,"sqlUsage":184,"outputEscaping":186,"fileOperations":14,"externalRequests":28,"nonceChecks":28,"capabilityChecks":191,"bundledLibraries":213},[],{"prepared":28,"raw":28,"locations":185},[],{"escaped":28,"rawEcho":187,"locations":188},12,[189,193,195,197,199,201,202,205,207,208,210,211],{"file":190,"line":191,"context":192},"templates\\geo_metabox.php",3,"raw output",{"file":190,"line":194,"context":192},4,{"file":190,"line":196,"context":192},7,{"file":190,"line":198,"context":192},8,{"file":190,"line":200,"context":192},9,{"file":190,"line":65,"context":192},{"file":203,"line":204,"context":192},"templates\\settings.php",11,{"file":203,"line":206,"context":192},26,{"file":203,"line":206,"context":192},{"file":203,"line":209,"context":192},38,{"file":203,"line":209,"context":192},{"file":203,"line":212,"context":192},44,[],[215,234],{"entryPoint":216,"graph":217,"unsanitizedCount":28,"severity":233},"save_post (wp_geo_posts.php:85)",{"nodes":218,"edges":230},[219,224],{"id":220,"type":221,"label":222,"file":164,"line":223},"n0","source","$_POST",129,{"id":225,"type":226,"label":227,"file":164,"line":228,"wp_function":229},"n1","sink","file_get_contents() [SSRF\u002FLFI]",134,"file_get_contents",[231],{"from":220,"to":225,"sanitized":232},true,"low",{"entryPoint":235,"graph":236,"unsanitizedCount":28,"severity":233},"\u003Cwp_geo_posts> (wp_geo_posts.php:0)",{"nodes":237,"edges":240},[238,239],{"id":220,"type":221,"label":222,"file":164,"line":223},{"id":225,"type":226,"label":227,"file":164,"line":228,"wp_function":229},[241],{"from":220,"to":225,"sanitized":232},{"summary":243,"deductions":244},"The wp-geoposts v1.0 plugin exhibits a generally good security posture based on the provided static analysis. There are no identified dangerous functions, SQL queries are all prepared, and there are no critical or high-severity taint flows. The absence of known CVEs in its history further suggests a well-maintained or less-targeted plugin. The plugin also demonstrates an awareness of security by including capability checks in its code.\n\nHowever, a significant concern arises from the total lack of output escaping for all 12 identified output points. This presents a substantial risk of Cross-Site Scripting (XSS) vulnerabilities, as user-supplied data, if not properly sanitized before being displayed, could be injected and executed in the user's browser. Additionally, the presence of one file operation without further context on its security implications warrants caution.\n\nIn conclusion, while the plugin avoids common pitfalls like raw SQL queries and dangerous functions, the complete lack of output escaping is a critical flaw that overshadows its strengths. The vulnerability history is a positive indicator, but it must be weighed against the immediate risks posed by unescaped output. Remediation of the output escaping issues should be the highest priority.",[245,248],{"reason":246,"points":247},"0% output escaping",15,{"reason":249,"points":191},"1 file operation without context","2026-03-16T22:04:34.202Z",{"wat":252,"direct":260},{"assetPaths":253,"generatorPatterns":257,"scriptPaths":258,"versionParams":259},[254,255,256],"\u002Fwp-content\u002Fplugins\u002Fwp-geoposts\u002Fquery.php","\u002Fwp-content\u002Fplugins\u002Fwp-geoposts\u002Ftemplates\u002Fgeo_metabox.php","\u002Fwp-content\u002Fplugins\u002Fwp-geoposts\u002Ftemplates\u002Fsettings.php",[],[],[],{"cssClasses":261,"htmlComments":262,"htmlAttributes":263,"restEndpoints":265,"jsGlobals":266,"shortcodeOutput":267},[],[],[264],"id=\"id_wp_geo_posts_section\"",[],[],[],{"error":232,"url":269,"statusCode":270,"statusMessage":271,"message":271},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fwp-geoposts\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":28,"versions":273},[]]