WordPress中的相对URL

WordPress中的相对URL,wordpress,Wordpress,在WordPress中,图像、文件、链接等被插入到WordPress中时使用的是绝对URL而不是相对URL,这让我感到沮丧。相对url对于切换域名、在http和https之间切换等更为方便。今天我发现,如果您使用相对url定义WP_CONTENT_url,那么当您将文件插入帖子时,它们将使用src的相对url,而不是绝对url。这正是我一直想要的!但是官方的WordPress文档说,如果要定义WP\u CONTENT\u URL,应该使用完整的URI : 将WP_CONTENT_URL设置为此目

在WordPress中,图像、文件、链接等被插入到WordPress中时使用的是绝对URL而不是相对URL,这让我感到沮丧。相对url对于切换域名、在http和https之间切换等更为方便。今天我发现,如果您使用相对url定义WP_CONTENT_url,那么当您将文件插入帖子时,它们将使用src的相对url,而不是绝对url。这正是我一直想要的!但是官方的WordPress文档说,如果要定义WP\u CONTENT\u URL,应该使用完整的URI

:

将WP_CONTENT_URL设置为此目录的完整URI(无尾随) 斜杠),例如

当我使用相对URL时,一切似乎都很好

define( 'WP_CONTENT_URL', '/my-content-folder');

但是使用相对URI会有问题吗?我只是想WordPress一定有理由声明它应该用完整的URI定义

我同意Rup。我想主要原因是为了避免在相对路径上出现混淆。我认为wordpress可以通过相对路径从头开始工作,但是当使用多个插件、主题如何配置等时,问题可能会出现

在测试服务器时,我曾经将此插件用于相对路径:


将所有URL转换为根相对URL,以便在多个IP上托管同一站点,从而简化生产迁移和更好地进行移动设备测试


我认为您要做的是,当您更改域名时,您拥有的sql转储文件可以用新域名替换旧域名的所有实例。这是唯一可用的选项,因为没有插件可以帮助您做到这一点


这是最快的方法

我认为这是只有核心开发人员才能/应该回答的问题。我已经研究并找到了核心票#17048:。在这里我们可以找到Andrew Nacin,首席核心开发人员解释的原因。他还链接到。在这两个链接上,以下是为什么WP不使用相对URL的关键引号:

核心票:

  • 根相对URL不是很合适<代码>/path/可能不是WordPress,它可能在安装之外。所以它和绝对URL没有太大区别

  • 当安装被移动时,任何相对URL也会使执行转换变得非常困难。在大多数情况下,find-replace是必需的,具有讽刺意味的是,出于这些原因,拥有一个绝对URL更便于移植

  • 在许多其他地方需要绝对URL。需要有条件地添加这些将增加处理,并引入潜在的bug(以及与插件的不兼容性)

[wp]线程

  • 相对于什么,我不确定,因为WordPress通常位于子目录中,这意味着我们将 始终需要处理内容,然后添加到路径的其余部分。这 引入开销

  • 请记住,有两种类型的相对URL,带和不带 前导斜杠。两者都有一些警告,使得这不可能正确地进行 实施

  • WordPress应该(并且确实)存储绝对URL。这 无需对内容进行预处理、无开销、无歧义。如果你 需要重新定位,它是数据库中的全局查找替换


而且,就我个人而言,我不止一次发现主题和插件编码错误,一旦定义,它们就会崩溃。
他们不知道这一点,可以设置并假设这是真的:WP.URL/WP content/where,但情况并非总是如此。一路上总会有一些事情发生


插件(链接在中)将函数应用于。这是一个非常简单的代码,似乎是一个不错的选择。

应该使用get\u home\u url(),那么您的链接是绝对链接,但如果您更改站点url,则不会产生任何影响。


<?php wp_make_link_relative( $link ) ?>

将完整URL路径转换为相对路径

删除http或https协议和域。将路径“/”保留在开头,因此它不是真正的相对链接,而是来自web根库

参考:


有一个简单的方法

不要使用
/pagename/
而使用
index.php/pagename/
,或者如果不使用永久链接,请执行以下操作:

职位

页面

类别

index.php?cat=7

这里有更多信息:

我在我的网站上通过functions.php解决了这个问题

add_action("template_redirect", "start_buffer");
add_action("shutdown", "end_buffer", 999);

function filter_buffer($buffer) {
    $buffer = replace_insecure_links($buffer);
    return $buffer;
}
function start_buffer(){
    ob_start("filter_buffer");
}

function end_buffer(){
    if (ob_get_length()) ob_end_flush();
}

function replace_insecure_links($str) {

   $str = str_replace ( array("http://www.yoursite.com/", "https://www.yoursite.com/") , array("/", "/"), $str);

   return apply_filters("rsssl_fixer_output", $str);

}
我参与了一个插件,把它切成小块,然后制作这个。
它替换了我网站中的所有链接(菜单、css、脚本等),一切正常。

在“设置=>媒体”下,有一个“文件的完整URL路径”选项。如果将其设置为默认媒体目录路径“/wp content/uploads”而不是空白,它将插入相对路径,例如“/wp content/uploads/2020/06/document.pdf”


我不确定它是否使所有链接都是相对的,例如帖子,但至少它处理媒体,这可能是大多数人担心的。

我总是使用
get\u site\u url()
。例如:

<img src="<?=get_site_url(); ?>/wp-content/uploads/2021/05/right-arrow-white@2x.png" />
/wp content/uploads/2021/05/右箭头-white@2x.png" />

我想答案是在WP代码和你正在使用的插件代码中审核它的所有使用情况,以确保它们没有一个假设它是完整的URL,而事实并非如此,但我想不出任何理由,这在我脑子里是不好的。试试这个插件或者读一下这篇文章可能会对你有所帮助@Krishna:如果我们可以输入Relative,为什么我们需要一个插件wp配置中的e URL?问题的关键是要找出在wp配置中使用相对URL是否会导致问题。当我不得不触摸wordpress时,我会哭。@TonyCronin很高兴它不是Drupal。如果只需要在wp配置文件中配置一个常量,为什么还要使用插件?除非它提供了避免特定pi的解决方案t所有这些都是相对的,不会屈服于任何陷阱
index.php?cat=7
add_action("template_redirect", "start_buffer");
add_action("shutdown", "end_buffer", 999);

function filter_buffer($buffer) {
    $buffer = replace_insecure_links($buffer);
    return $buffer;
}
function start_buffer(){
    ob_start("filter_buffer");
}

function end_buffer(){
    if (ob_get_length()) ob_end_flush();
}

function replace_insecure_links($str) {

   $str = str_replace ( array("http://www.yoursite.com/", "https://www.yoursite.com/") , array("/", "/"), $str);

   return apply_filters("rsssl_fixer_output", $str);

}
<img src="<?=get_site_url(); ?>/wp-content/uploads/2021/05/right-arrow-white@2x.png" />