我对在我的wordpress应用程序中获取URI感到震惊,缺乏PHP知识使我的进展缓慢。我有这个网址
http://abc.com/my-blog/abc/cde
我需要创建一个类似 URL 的网址
http://abc.com/my-blog/added-value/abc/cde
其中http://abc.com/my-blog
是我的WordPress博客的URL,我可以使用以下方法轻松获得
home_url()
我可以使用 PHP $_SERVER["REQUEST_URI"]
来获取请求 URI,它将作为
/my-blog/abc/cde
而且我没有直接的方法可以根据我的要求增加价值
有没有办法在PHP或WordPress中轻松实现这一点,我可以在其中获得以下信息
- 主页网址
- 网址的其余部分
这样最后我可以做以下事情
Home-URL+ custom-value+Rest part of the URL
我的困惑点
- 在我的本地设置中,
$_SERVER["REQUEST_URI"]
给了我/my-blog/abc/cde
,其中/my-blog
是wordpress的安装目录,我可以轻松地跳过第一级。 - 在生产服务器上,它与
/my-blog
不同,不会成为 URL 的一部分。
非常简短:
<?php
$url = "http://abc.com/my-blog/abc/cde";
$parts = parse_url($url);
$path = explode("/", $parts["path"]);
array_splice($path, 2, 0, array("added-part")); //This line does the magic!
echo $parts["scheme"] . "://" . $parts["host"] . implode("/",$path);
好的,所以如果$addition
是你想要的中间位,$uri
是你从$_SERVER["REQUEST_URI"]
那里获得的,那么这个..
$addition = "MIDDLEBIT/";
$uri = "/my-blog/abc/cde";
$parts = explode("/",$uri);
$homeurl = $parts[1]."/";
for($i=2;$i<count($parts);$i++){
$resturl .= $parts[$i]."/";
}
echo $homeurl . $addition . $resturl;
应打印:
my-blog/MIDDLEBIT/abc/cde/
您可能想使用爆炸或其他一些刺痛功能。 下面是一些示例:
$urlBits = explode($_SERVER["REQUEST_URI"]);
//blog address
$blogAddress = $urlBits[0];
//abc
$secondPartOfUri = $urlBits[1];
//cde
$thirdPartOfUri = $urlBits[2];
//all of uri except your blog address
$uri = str_replace("/my-blog/", "", $_SERVER["REQUEST_URI"]);
这是在 PHP 中获取当前 url 的可靠方法。
public static function getCurrentUrl($withQuery = true)
{
$protocol = stripos($_SERVER['SERVER_PROTOCOL'], 'https') === false ? 'http' : 'https';
$uri = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
return $withQuery ? $uri : str_replace('?' . $_SERVER['QUERY_STRING'], '', $uri);
}
您可以使用 wordpress 使用 get_home_url() 将主网址存储在变量中
$home_url = get_home_url();
$custom_value = '/SOME_VALUE';
$uri = $_SERVER['REQUEST_URI'];
$new_url = $home_url . $custom_value . $uri;