Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用wordpress创建多区域网站_Php_Wordpress - Fatal编程技术网

Php 如何使用wordpress创建多区域网站

Php 如何使用wordpress创建多区域网站,php,wordpress,Php,Wordpress,我正在尝试使用WordPress制作一个多地区的网站。当有人从美国重定向到localhost/siteone/usa时,我正在处理我想要的url/ 我用下面的代码编辑wordpress主题的function.php文件,但得到的错误是url变成localhost/siteone/usa/usa/usa/usa // Detacting user location using ipstack $json = file_get_contents('http://api.ipstack.com/ch

我正在尝试使用WordPress制作一个多地区的网站。当有人从美国重定向到localhost/siteone/usa时,我正在处理我想要的url/ 我用下面的代码编辑wordpress主题的function.php文件,但得到的错误是url变成localhost/siteone/usa/usa/usa/usa

// Detacting user location using ipstack

$json = file_get_contents('http://api.ipstack.com/check?access_key=ACCESSKEY&language=en');
// Converts it into a PHP object
$data = json_decode($json);
$loc = $data->country_code;
//NA = northamerica
//End of Decating user location     
if($loc=="NA"){      header("Location: usa/");      }

这在单独使用时效果非常好,但当我在主题文件中添加function.php时,出现了一个错误。我该怎么办。我应该使用一些会话或任何元素。

它看起来像是尝试多次重定向,因为它会检查人的位置,然后重定向,重定向后会再次检查,然后再次重定向,等等

您可以做的是检查“/usa”是否已经在页面URL中,如果没有,则重定向,类似这样的操作可能会起作用:

if ($loc === "NA" && strpos($_SERVER['REQUEST_URI'],'usa/') === false) {
    header("Location: usa/");
}

$\u SERVER['REQUEST\u URI']是当前页面的URL,不包括域。

它似乎尝试多次重定向,因为它将检查此人的位置,然后重定向,重定向后将再次检查,然后再次重定向,等等

您可以做的是检查“/usa”是否已经在页面URL中,如果没有,则重定向,类似这样的操作可能会起作用:

if ($loc === "NA" && strpos($_SERVER['REQUEST_URI'],'usa/') === false) {
    header("Location: usa/");
}

$\u SERVER['REQUEST\u URI']是当前页面的URL,不包括域。

对于语言和创建不同地区的网站,我建议您使用以下插件(pro):

  • (只付了一个)
  • (年费)
基于语言的自定义代码:

<?php 
                if(pll_current_language() == 'en') {
                    echo 'Only in english';
                } else if(pll_current_language() == 'fr') {
                    echo 'Seulment en francais'; 
                }  
        ?>

如果您更喜欢通过web服务器使用控制语言,请使用更好的:$\u server['HTTP\u ACCEPT\u language']

链接:


问候

对于语言和创建不同地区的网站,我建议您使用以下插件(pro):

  • (只付了一个)
  • (年费)
基于语言的自定义代码:

<?php 
                if(pll_current_language() == 'en') {
                    echo 'Only in english';
                } else if(pll_current_language() == 'fr') {
                    echo 'Seulment en francais'; 
                }  
        ?>

如果您更喜欢通过web服务器使用控制语言,请使用更好的:$\u server['HTTP\u ACCEPT\u language']

链接:



问候

实现这一点的方法很少——您可以使用:navigator.language在JS中进行尝试,然后执行重定向——但这并不是最好的方法,有时用户会使用en-US-lang,即使它不是真的。最好是使用PHP中的geoip函数来检查somes请求的位置,而不是使用特定于语言的路由进行响应。或者像许多大型网站一样,登陆页面是语言设置,我不明白最后一点,请你解释一下,或者给任何文章一个建议。以前nvidia.com有过这种解决方案-在去路由
/
之后,首先你必须选择你的语言,但出于某种原因,目前它是自动为你选择的。我记不起这个解决方案的其他好例子了。他们是怎么做到的?这完全是前端解决方案。一旦用户选择了自己的语言,网站就会像这样保存变量->用户会被JS重定向到特定语言的路径。由于每个页面上都设置了语言变量,例如联系人/主页等,因此JS会检查该变量,并简单地提供特定于语言的内容(这可以在不重新加载的情况下完成).实现这一点的方法很少-您可以使用:navigator.language在JS中尝试,然后执行重定向-但这并不是最好的方法,有时用户会使用en-US-lang,即使它不是真的。最好是使用PHP中的geoip函数来检查somes请求的位置,而不是使用特定于语言的路由进行响应。或者像许多大型网站一样,登陆页面是语言设置,我不明白最后一点,请你解释一下,或者给任何文章一个建议。以前nvidia.com有过这种解决方案-在去路由
/
之后,首先你必须选择你的语言,但出于某种原因,目前它是自动为你选择的。我记不起这个解决方案的其他好例子了。他们是怎么做到的?这完全是前端解决方案。一旦用户选择了自己的语言,网站就会像这样保存变量->用户会被JS重定向到特定语言的路径。由于每个页面上都设置了语言变量,例如contacts/home page等。JS会检查此变量并简单地提供特定于语言的内容(无需重新加载即可完成)。为什么要使用===而不是==,并且我在function.php上添加了此变量,它不起作用(不重定向url)@Shani在可以使用===的地方使用===是一种很好的做法,而且速度更快-您可以在某个循环中测试它。我在function.php上添加了这个功能。它不工作(不重定向url)$\u SERVER['REQUEST\u URI']是否为页面显示了正确的url?回音,看看你得到了什么。如果它没有返回正确的URL,您需要首先解决这个问题,或者使用另一种方法来获取当前页面的URL。为什么要使用===而不是==,我在function.php上添加了这个选项。它不起作用(不重定向URL)@Shani在可以使用===的地方使用===是一种很好的做法,而且速度更快-您可以在某个循环中测试它。我在function.php上添加了这个功能。它不工作(不重定向url)$\u SERVER['REQUEST\u URI']是否为页面显示了正确的url?回音,看看你得到了什么。如果它没有返回正确的URL,您需要首先解决该问题,或者使用其他方法获取当前页面的URL。
echo-echo
您确定吗?@Zydnar这是一个错误;)<代码>回声回声你确定吗?@Zydnar那是个错误;)