17713433920 info@mac163.com

概观

Skype URI可以将链接插入您的网站,点击后即可启动Skype应用程序。

你可能会认为在你的WordPress网站的菜单中添加一个Skype链接是一个不错的主意,但是当你去保存你的自定义URL时,你会注意到这个URL被WordPress菜单系统剥离了,你留下了一个没有href属性的锚标记。

如何将Skype URI链接添加到WordPress菜单
如何将Skype URI链接添加到WordPress菜单

发生这种情况是因为WordPress拒绝协议未列入白名单的URL。默认情况下,以下协议列入白名单,因此可以添加到菜单中的自定义URL:

  • HTTP
  • HTTPS
  • FTP
  • FTPS
  • 邮寄地址
  • 新闻
  • IRC
  • 地鼠
  • NNTP
  • 饲料
  • 远程登录

因此,解决方案是将skype协议添加到白名单。

跟踪问题

自定义菜单项(链接)URL没有太多文档,因此当您尝试以静默方式保存它时会失败,并且没有指示URL无法正确保存的原因。

通过挖掘核心代码,我发现菜单项设置已经过验证并保存在wp_update_nav_menu_item位于的函数中wp-includes/nav-menu.php。此函数esc_url_raw()在保存更新的值之前调用提交的菜单项URL。

esc_url_raw功能可以采取协议作为参数列表,但在这一点上没有钩,使我们可以添加我们的自定义协议,而无需编辑核心文件-因此,我们继续挖掘定制点。esc_url_raw函数调用esc_url函数in wp-includes/formatting.php,它检查URL的协议是否存在于返回的白名单协议数组中wp_allowed_protocols

值得庆幸的是,该wp_allowed_protocols功能定义wp-includes/functions.php了一个过滤器kses_allowed_protocols,这是将我的Skype协议添加到白名单的关键。

解决方案

一旦我们找到合适的过滤器,解决方案实际上非常简单。我们过滤$protocol阵列并添加Skype协议:

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

这段代码可以很好地放在儿童主题中 functions.php

将此代码添加到您的安装后,您应该能够skype:username?call通过在菜单中创建新的自定义菜单项(链接)并添加Skype URI作为自定义URL 来保存Skype URI :


微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部