我有一个基于wordpress的多站点。这些站点使用相同的主题,并且位于相同的域下。我希望他们根据站点显示一些代码。
所以我有这样的东西
<?php
$currentUrl = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if ($currentUrl == 'http://example.com/institution/') {
do something
} else {
do something different
}
?>
现在无论何时我在http://example.com/institution/
或http://example.com/institution2/
上(以及机构2的子页面http://example.com/institution2/contact
),但当我进入机构的子页面时,例如:{{1 }}代码无法正常工作。我在这里想念什么?
答案 0 :(得分:2)
正如arkascha在他的评论中已经提到的那样,您正在检查提供的URL和期望的URL中的equality。您真正想要的是检查(来自用户的)提供的网址以您的预期网址开头。
您可以使用stripos函数来实现此目的。
stripos —查找字符串中首次出现的不区分大小写的子字符串的位置
int stripos ( string $haystack , mixed $needle [, int $offset = 0 ] )
haystack 要搜索的字符串。
needle 请注意,needle可以是一个或多个字符的字符串。如果needle不是字符串,则将其转换为整数并用作字符的序数值。
偏移量如果指定,搜索将从字符串的开头开始计算此数量的字符。如果偏移量为负,则搜索将从字符串的末尾开始计算此数量的字符。
返回相对于干草堆琴弦的起点(与偏移量无关),针所在的位置。另外请注意,字符串位置从0开始,而不是1。如果未找到针,则返回FALSE。
因此您可以将代码更改为
if (stripos($currentUrl, '//example.com/institution') >= 0)
{
...
}
else
{
...
}
或具有反逻辑(请检查是否不是)
if (stripos($currentUrl, '//example.com/institution') == FALSE)
{
...
}
else
{
...
}
答案 1 :(得分:0)
<?php
$currentPath = $_SERVER['SCRIPT_NAME'];
$currentPath = explode("/",$currentPath);
if ($currentPath[1] == 'institution') {
do something
} else {
do something different
}
?>