我目前正在为我的客户完成网站,我无法实现的唯一功能是根据位置向用户显示正确的电话号码。
我试图找到一些插件,但没有成功。也许有人可以帮助我完成可以实现此功能的代码段?谢谢!
几件事。
由于地理位置可能是欺骗性的,因此理想情况下,您将显示所有可用的号码并拥有一个主号码。或者更好的是,根据访问者获取和推荐来源通过脚本更改呼叫跟踪号码。
除此之外,您可以使用像ipstack这样的资源。
您使用要使用的 IP 地址(可能$_SERVER['REMOTE_ADDR']
?)和访问密钥发出https://api.ipstack.com/
请求。因此,您的请求 URL 如下所示:
$ipstack_url = 'https://api.ipstack.com/123.456.789.001?access_key=YOURACCESSKEYHERE'
WordPress有一个内置的远程URL函数wp_remote_get()
,您可以使用它来获取此值。
$geo_info = wp_remote_retrieve_body( wp_remote_get( $ipstack_url ) );
为了更好地使用 ipstack(和您的请求限制),您可能应该使用WP_TransientsAPI 将其缓存至少 24 小时(这些结果不会有太大变化,因此如果需要,您可以缓存更长时间)。您每月免费收到 10k 个请求,因此如果您有一个高流量网站,这一点更为重要
现在,您可以使用该IP地址的ipstack请求执行所需的操作,例如根据当前城市显示不同的电话号码。
如果我们把所有这些结合起来,你会得到这样的东西:
// Get your IP however you want
$ip_addr = $_SERVER['REMOTE_ADDR'];
// You'll need an API Key
$api_key = 'YOURACCESSKEYHERE';
// Build your API URL
$api_url = "https://api.ipstack.com/$ip_addr?access_key=$api_key"; // Build the API Url
// Give your transient a unique, yet identifiable name
$transient_name = "ipstack-$ip_addr";
// Check for our transient, if it's not there set it for 24 hours
if( false === ( $transient = get_transient( $transient_name ) ) ){
set_transient( $transient_name, wp_remote_retrieve_body( wp_remote_get( $api_url ) ), 86400 );
}
// Decode the JSON response we got
$json = json_decode( get_transient( $transient_name ) );
// Do whatever you want with it
if( $json->city == 'Los Angeles' ){
echo 'Phone For LA: 123-456-7890';
} else if( $json->city == 'San Francisco' ){
echo 'Phone For SF: 321-654-0987';
} else {
echo 'Default Phone: 098-765-4321';
}