Very Simple Geo targeting

时间:2015-10-05 作者:IXN

我想一些非常简单和有限的地理定位功能。

我想根据访问者是否来自美国显示不同的页脚。理想情况下,代码应该是这样的:

<?php if ( visitor is from usa ): ?>
<?php get_footer(\'us\'); ?>
<?php else: ?>
<?php get_footer(\'other-countries\'); ?>
<?php endif; ?>
我希望解决方案尽可能简单和轻便。

3 个回复
最合适的回答,由SO网友:GµårÐïåñ 整理而成

我个人非常喜欢ip-api.com

它的使用非常简单,并且是一个示例PHP代码countryCode 会很简单地给你你需要的。您可以做更多的工作,也可以阅读其中的完整文档,但对于您列出的特定需求,下面是一个示例代码:

$ip = $_SERVER[\'REMOTE_ADDR\'];
$query = @unserialize(file_get_contents(\'http://ip-api.com/php/\' . $ip));
$geo = $query[\'countryCode\'];
剩下的是一个简单的if$geo == \'US\' 做任何其他事情做其他事情。这就差不多了,实现起来非常简单,您不需要安装任何东西。MaxMind库很好,但对某些人来说,它可能很重,很难管理。

祝你好运

更新1[php](2018年3月5日)回复您的电子邮件,切换到JSON 相反,与现在的情况没有太大不同。唯一改变的一行是:

$query = json_decode(file_get_contents(\'http://ip-api.com/json/\' . $ip), true);
如果要使用回调函数,只需执行以下操作:

$query = json_decode(file_get_contents(\'http://ip-api.com/json/\' . $ip . \'?callback=<function>\'), true);
我建议您使用true 参数打开json_decode 获取数组以便更容易操作。

更新2[jquery](2018年3月5日)

我刚刚意识到,在你的电子邮件中,你提到了jquery,虽然我个人会选择上面的PHP方法,但下面是一个如何使用jquery实现相同功能的示例。

var ip = ...;
var query = $.getJSON(
    "http://ip-api.com/json/"+ ip,
    function (json) {
        var whatever = json.whatever;
        // where whatever is something that is returned
        // such as status aka json.status
        // look at what is returned to see what you need
    });
。。。意味着ip,但是您将获得它。实际上不需要回调,因为您可以在上面的函数中执行任何您想要的操作,仅此而已。

SO网友:Aric Watson

我很久以前就使用过这项服务,设置起来比较轻松:https://github.com/maxmind/geoip-api-php

设置好后,您可以根据访问者的IP地址提取其国家代码或名称。

SO网友:Ravi Patel

我个人非常喜欢ipinfo.io developer

$data = file_get_contents("http://ipinfo.io");
$loc_info = json_decode($data);
$country = $loc_info->country; //get country code

//check visitor country code here.

if ( $country == \'US\'):
    get_footer(\'us\'); ?>
else:
    get_footer(\'other-countries\')
endif; 

enter image description here

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register