TL; DR-为什么Wordpress从文件链接中删除file://?
我们的Intranet页面上有一个部分,其中包含图标及其后的链接。突然之间(我们的猜测是在更新之后),其中一个链接停止了工作。链接如下(1):
<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。
答案 0 :(得分:0)
我发现了与此问题有关的另一个问题: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/
添加上面的代码为我解决了这个问题,因此我希望这可以帮助其他人将来解决类似的问题。