WordPress中的相对URL

我一直发现,在Wordpress中,图像,文件,链接等插入到WordPress的绝对URL而不是相对的URL。 相对url更方便切换域名,http和https之间的变化等。今天我发现,如果你定义WP_CONTENT_URL与一个相对的url,然后当你插入文件到post中,他们使用相对的url为src而不是绝对url。 就是我一直想要的! 但官方的WordPress的文档说,如果你正在定义WP_CONTENT_URL,你应该使用完整的URI

WordPress的codex说 :

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

define( 'WP_CONTENT_URL', 'http://example/blog/wp-content'); 

当我使用相对URL时,似乎工作正常,例如

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

但是使用相对URI存在一些问题吗? 我只是想,Wordpress必须有一个理由说,它应该定义一个完整的URI。

我认为这只是一个核心开发者可以/应该回答的问题。 我已经研究并发现核心标签#17048: 传递给浏览器的URL应该是根相对的 。 在哪里我们可以find由领导核心开发人员Andrew Nacin解释的原因。 他还链接到这个[wp-hacker]线程 。 在这两个链接上,这些是为什么WP不使用相对URL的关键引用:

核心票:

  • 根目录相关的URL并不适合。 /path/可能不是WordPress,它可能在安装之外。 所以真的和绝对URL没什么两样。

  • 任何相对URL也会使安装移动时执行转换变得非常困难。 在大多数情况下,查找replace将是必要的,而绝对URL由于这些原因具有讽刺意义的更便携性。

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

[wp-hacker]线程

  • 相对于我而言,我并不确定,因为WordPress常常在子目录中,这意味着我们总是需要处理内容,然后添加到path的其余部分。 这引入了开销。

  • 请记住,有两种types的相对URL,使用和不使用前导斜杠。 都有警告,使这不可能正确实施。

  • WordPress应该(并确实)存储绝对URL。 这不需要对内容进行预处理,也不需要开销,也不需要模糊。 如果您需要重新定位,则它是数据库中的全局查找replace。


而且,在个人logging中,不止一次,我发现主题和插件不良编码,只是在定义WP_CONTENT_URLWP_CONTENT_URL
他们不知道这是可以设置的,并假设这是真的: WP.URL / wp-content / WhatEver ,情况并非总是如此。 有什么东西会一路突破


插件相对URL (在edse的答案中链接), 在动作钩子template_redirect的一系列filter中应用函数wp_make_link_relative 。 这是一个相当简单的代码,似乎是一个不错的select。

 <?php wp_make_link_relative( $link ) ?> 

将完整的URLpath转换为相对path。

删除http或https协议和域。 在开始处保留path“/”,所以它不是一个真正的相对链接,而是来自web根目录。

参考: WordPress的Codex

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

在testing服务器上工作时,我曾经使用过相关path的插件:

根相对URL
将所有URL转换为根相对URL,以便在多个IP上托pipe相同的站点,更轻松地进行生产迁移和更好的移动设备testing。

应该使用get_home_url(),那么你的链接是绝对的,但它不会影响如果你改变网站的url

我想你所做的是在你更改域名的时候,你所拥有的sql转储文件可以用新的replace旧域名的所有实例。 这是唯一的select,因为没有插件可以帮助你做到这一点。

这是最快捷的方式

有一个简单的方法

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

岗位

 index.php?p=123 

 index.php?page_id=42 

类别

 index.php?cat=7 

更多信息在这里: http : //codex.wordpress.org/Linking_Posts_Pages_and_Categories