You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自动删除带自定义URL scheme外链头部,如何在子模板中解决?

WordPress自定义URL scheme被过滤解决方案

可以通过子主题(你所说的子模板)的方式解决该问题,不需要单独定义新的页面头部,只需要在子主题的功能配置文件中新增自定义协议白名单钩子即可。WordPress默认会对提交的链接做协议白名单校验,仅放行http、https、ftp等通用协议,yandexnavi://、yandexmaps://这类自定义scheme不在白名单内就会被自动删除,下述修改完全基于子主题实现,不会被父主题更新覆盖配置,也无需修改WordPress核心文件。

具体操作步骤

  • 进入你的WordPress站点子主题目录,找到functions.php文件,若不存在则手动新建该文件
  • 在functions.php文件末尾加入以下代码,示例中已包含你提到的yandexnavi、yandexmaps协议,如有其他自定义协议可直接在数组中新增:
add_filter( 'kses_allowed_protocols', function ( $protocols ) {
    // 自定义协议白名单列表,按需增减即可
    $custom_protocols = [
        'yandexnavi',
        'yandexmaps'
    ];
    return array_merge( $protocols, $custom_protocols );
} );
  • 保存文件后刷新WordPress后台,再插入自定义协议的链接就不会被系统自动删除

补充适配

如果使用古腾堡块编辑器插入链接仍被过滤,可以在上述代码中额外新增编辑器协议校验适配钩子,完整代码如下:

// 全局协议白名单配置
add_filter( 'kses_allowed_protocols', function ( $protocols ) {
    $custom_protocols = [
        'yandexnavi',
        'yandexmaps'
    ];
    return array_merge( $protocols, $custom_protocols );
} );

// 古腾堡编辑器协议校验适配
add_filter( 'rest_url_validation_allowed_protocols', function ( $protocols ) {
    $custom_protocols = [
        'yandexnavi',
        'yandexmaps'
    ];
    return array_merge( $protocols, $custom_protocols );
} );

内容的提问来源于stack exchange,提问作者Eren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:09:04