我已经阅读并测试了 stackoverflow 上的所有解决方案。
我创建了一个 Wordpress 插件,但我认为问题不是来自这个 CMS。
我需要将第一个函数的输出传递给第二个函数,我尝试了全局、类方法和公共函数,但每次都不起作用:
所以我想将 getusercountrycode() 输出传递给 atv_redirect():
//try/ class atvRed {
//try/ public function __construct( ){
//add_action('template_redirect', array( $this,'atv_redirect'));
//try/ }
//try/ add public after function
function getusercountrycode(){
$ip = $_SERVER['REMOTE_ADDR'];
$ch = curl_init();
$curlConfig = array(
CURLOPT_URL => "https://get.geojs.io/v1/ip/country/{$ip}.json",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => false
);
curl_setopt_array($ch, $curlConfig);
$countrycode = curl_exec($ch);
curl_close($ch);
$countrycode = json_decode($countrycode);
//try/ $countrycode = strtolower($countrycode);
//try/ global $countrycode;
return $countrycode;
}
//try/ $visitorlang = getusercountrycode();
function atv_redirect(){
//try/ global $countrycode;
if ( !function_exists( 'getusercountrycode' ) ) {
return;
}else{
$geoip = getusercountrycode();
$visitorlang ="";
foreach ($geoip as $infoip => $ipvalue){
if($infoip == 'country'){
$visitorlang = $ipvalue;
}
}
//global $countrycode;
//$visitorlang = strtolower($countrycode);
$atvdomain = $_SERVER['HTTP_HOST'];
$currentpage = $_SERVER['REQUEST_URI'];
$listlangs = 'fr|en';
$addlang = "/fr";
$langsltd = "fr";
//$visitorlang = '/'.$visitorlang;
//if(preg_match ('/^(?:(?!'.$visitorlang.').)*$/i', $_SERVER['REQUEST_URI'])){
//if(preg_match ("/^(?:(?![a-z]{2}).)*$/i", $_SERVER['REQUEST_URI'])){
if(preg_match ("/^(?:(?!fr).)*$/i", $_SERVER['REQUEST_URI'])){
wp_safe_redirect($addlang.'/'.$currentpage);
}
}
}
add_action('template_redirect','atv_redirect');
//try/ }$atvRew = new atvRed();
抱歉,初学者的错误: 我测试了任何我忘记评论重复变量的解决方案。 感谢您的时间和帮助。
工作完美:
$geoip = getusercountrycode();
$visitorlang = $geoip->country;
$visitorlang = strtolower($visitorlang);
还有那个:
$geoip = getusercountrycode();
$visitorlang = "";
foreach ($geoip as $infoip => $ipvalue){
if($infoip == 'country'){
$visitorlang = $ipvalue;
}
// forgot to return -> return $visitorlang;
}
$visitorlang = strtolower($visitorlang);