首页 > 解决方案 > Wordpress 更新后删除文件前缀

问题描述

TL;DR - 为什么 Wordpress 从文件链接中删除 file://?

我们的 Intranet 页面有一个包含图标的部分,图标后面带有链接。突然之间(我们的猜测是在更新之后),其中一个链接停止工作。链接如下(一):

<a href="file://vmdata/meetings" target="_blank"><img src="/img/meetings.jpg" style="width:75px; height:75px;"/></a>

预期的行为(在 Internet Explorer (2) 中)是文件资源管理器打开,并指向共享 \vmdata\meetings,直到现在它一直有效。

但是,当我将鼠标悬停在图标图像上时,我会看到以下代码:

http://vmdata/meetings

当我通过查看页面的源代码检查 HTML 时,我发现 file:// 前缀确实消失了:

<a href="//vmdata/meetings" target="_blank" rel="noopener noreferrer">

为了解决这个问题,我查看了原始创建者添加了相同类型链接的页面。我的想法是创建一个类似的页面,复制页面上的 HTML 代码并将图标链接到所述页面。我添加了页面和 HTML 链接,但查看页面后,结果完全相同:file:// 前缀不见了。

我的猜测是 Wordpress 中的某些内容正在重写/删除 file:// 链接。我现在的问题是双重的:如何停止这种重写/删除行为,和/或如何像以前一样添加指向文件共享的链接?

PS:网站的创建者不再可用,网站正在运行但不受管理。只剩下内容创作者。我们内部没有 Wordpress 知识,所以我们基本上只是试图保持网站正常运行(等待新网站)。

(1) 我意识到从 Intranet 站点指向服务器共享是一种非常丑陋的发布文件的方式。但是,如前所述,我们的情况是,如果它没有损坏,就不要用这个网站修复它,所以我们只想回到工作状态。创建一个链接到(托管)文档的页面会好很多,但由于各种原因不可行。

(2) 请不要费心指出不再使用 Internet Explorer,我们都知道,但我们坚持使用它,因为它是我们每天都使用的主要工具之一的要求。只要该工具不支持其他浏览器,我们就会被 IE 困住(不幸的是)。

标签: htmlwordpressnetwork-sharefile-link

解决方案


我发现了关于这个问题的另一个问题:can't save network share path as a link in wordpress 3.1

显然,将允许的协议添加到 WordPress 中的正确方法是修改 functions.php 文件并添加以下代码:

function allowed_link_protocols_filter($protocols)
{
   $protocols[] = 'file';
   return $protocols;
}
add_filter('kses_allowed_protocols', 'allowed_link_protocols_filter');

更多信息可以在以下文章中找到:https ://developer.wordpress.org/reference/hooks/kses_allowed_protocols/

添加上面的代码为我解决了这个问题,所以我希望这可以帮助其他人在未来解决类似的问题。


推荐阅读