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

Translatepress自动为script标签加defer导致JavaScript失效如何解决?

阻止TranslatePress自动为script标签添加defer属性的解决方案

TranslatePress添加defer的逻辑和你已禁用的「Fix missing dynamic content」「dynamic translation」功能无关,这两个功能仅负责动态内容的翻译适配,不控制script标签属性修改,可通过以下几种方法解决:

方法1:全局禁用TranslatePress的defer添加逻辑

直接使用TranslatePress官方提供的过滤器钩子,清空允许添加defer的script白名单,所有script都不会被自动加defer:
将以下代码添加到当前活跃主题的functions.php文件末尾,或使用自定义代码片段插件导入:

// 完全禁用TranslatePress自动添加defer属性的功能
add_filter( 'trp_allowed_script_atts_to_add_defer', '__return_empty_array' );

方法2:仅排除自定义计算器脚本(更推荐)

如果不想影响TranslatePress的其他性能优化逻辑,可以只把你的计算器JS排除在defer规则外,针对性更强:

add_filter( 'trp_allow_defer_for_script', function( $allow, $script_src, $script_handle ){
    // 请将下方的匹配规则替换为你计算器JS的实际特征
    // 示例规则:JS路径包含calculator关键词,或注册句柄为custom_calculator
    if( strpos( $script_src, 'calculator' ) !== false || $script_handle === 'custom_calculator' ){
        return false;
    }
    return $allow;
}, 10, 3 );

方法3:底层强制移除script标签的defer属性

如果上述TranslatePress专属钩子不生效,可以使用WordPress核心的script标签过滤器,强制移除指定脚本的defer属性:

add_filter( 'script_loader_tag', function( $tag, $handle, $src ){
    // 匹配你的计算器脚本的注册句柄,也可添加src关键词匹配
    if( $handle === 'custom_calculator' ){
        // 移除所有形式的defer属性
        $tag = str_replace( [' defer ', ' defer="defer" ', " defer='defer' "], ' ', $tag );
    }
    return $tag;
}, 999, 3 );

生效验证

添加代码后请清空网站缓存、TranslatePress插件缓存,再访问前端页面检查计算器脚本的defer属性是否已被移除,功能是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:04