GET_BLOGINFO(‘url’)是否返回带反斜杠的URL?

时间:2022-01-03 作者:alancc

根据我的测试,get\\u bloginfo(\'url\')不会返回反斜杠,因此它将返回如下url:

https://www.example.com/blogs
在此帖子中What is difference between get_bloginfo('url') and get_site_url()?, 据说get\\u bloginfo(\'url\')调用home\\u url()。

在这篇帖子里https://stackoverflow.com/questions/31086865/why-does-the-trailing-slash-appear-after-url-when-using-home-url-in-wordpress, 据说home\\u url()将返回带有反斜杠的url。

所以,我很困惑。无论如何,我想找到一个函数来返回URLwith 反斜杠。

2 个回复
最合适的回答,由SO网友:Rup 整理而成

The Codex example for home_url() 说你想要home_url( \'/\' ) 获取带有尾部斜杠的博客URL。

或者,您可以使用trailingslashit( home_url() ). 如果您的站点的home选项最终以斜杠结尾,这可能会更安全,因为它看起来像get\\u home\\u url()假设不是,但这不应该发生。

SO网友:kero

据说get\\u bloginfo(\'url\')调用home\\u url()。

Correct, 尽可能read in the source code:

    case \'url\':
        $output = home_url();
        break;
据说home\\u url()将返回带有反斜杠的url

Wrong. In the docu it says, 那个home_url() 将返回;[h] ome URL链接with optional path appended"E;(我的重点)。

如果希望主URL始终具有尾部斜杠,可以使用home_url 过滤器,因为在引擎盖下面,home_url() 将使用get_home_url():

add_filter(\'home_url\', function (string $url): string {
    // already has trailing slash
    if (substr($url, -1) === \'/\') {
        return $url;
    }

    // add trailing slash
    return $url . \'/\';
}, 10);
(或可读性差得多,但只有一行)

// force trailing slash
add_filter(\'home_url\', fn (string $url): string => $url . (substr($url, -1) !== \'/\' ? \'/\' : \'\'), 10);
然而,这可能会破坏一些依赖于home_url() 不返回尾部斜杠,因此使用风险自负!

相关推荐

Altered Media Library URLs

我有一个客户的网站,是在他们离开另一家代理机构后我找到的。该机构使用了一个专有主题和自己的自托管页面生成器,以防止其在除他们之外的任何其他托管环境中更新或编辑。它的另一个方面是重新映射主题的URL并上载目录。因此,例如,代替WP在中查找主题文件http://domain.com/wp-content/themes/…. 它在里面找他们http://domain.com/t/….同样,对于图像上载,也可以在http://domain.com/wp-content/uploads/…, 它在里面找他们http