WordPress的地理定位非常简单

问题描述 投票:0回答:1

我需要为WordPress网站做一些非常基本的地理定位。

就像是:

<?php if ( visitor is from usa ): ?>
<?php get_footer('us'); ?>
<?php else: ?>
<?php get_footer('other-countries'); ?>
<?php endif; ?>

直到现在我使用了ip-api.com提供的GEO服务。我的代码看起来像这样:

<?php $ip = $_SERVER['REMOTE_ADDR'];
$query = @unserialize(file_get_contents('http://ip-api.com/php/' . $ip));
$geo = $query['countryCode'];
if( $query['countryCode'] == 'US') : ?>
                    DO THIS
<?php else: ?>
                    DO THAT
<?php endif ?>  

问题是php unserialize现在已被弃用并且非常慢。相反,Ip-api suggest to use JSON。但我是一个新手,我不知道如何用JSON实现相同的结果。有人可以帮帮我吗?

我知道那里有各种各样的插件,但我认为它们对于我需要的非常简单的地理定位来说太过分了。

PS:我只是learn我应该使用代码

$.getJSON( '//ip-api.com/json?callback=?', function( data ) {
console.log( JSON.stringify( data, null, 2 ) );
});

但是我仍然需要帮助来整理最终的完整代码。

php json wordpress geolocation
1个回答
1
投票

试试这个:

<?php
$ip = ( ! empty( $_SERVER['REMOTE_ADDR'] ) ) ?
    $_SERVER['REMOTE_ADDR'] : '';

$country_code = '';
if ( $ip ) {
    // 'fields' are comma-separated list of fields to include in the response.
    // No spaces between the fields. See http://ip-api.com/docs/api:returned_values#field_generator
    $url = 'http://ip-api.com/json/' . $ip . '?fields=countryCode,status,message';

    $res_body = wp_remote_retrieve_body( wp_safe_remote_get( $url ) );
    $geo = json_decode( $res_body );

    $country_code = isset( $geo->countryCode ) ? $geo->countryCode : '';
}

if ( 'US' === $country_code ) : ?>
    DO THE THIS
<?php else : ?>
    DO THE THAT
<?php endif; ?>

PS:我刚才知道我应该使用代码

是的,that是用jQuery做的一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.