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

如何为WooCommerce的select2.min.js添加Cookie豁免属性?调试代码无效求助

为WooCommerce的Select2脚本添加Cookie豁免属性的解决方案

我需要给WooCommerce插件加载的woocommerce/assets/js/select2/select2.min.js脚本添加data-cookieconsent="ignore"属性。由于启用了Cookiebot自动模式,用户拒绝Cookie时该脚本无法加载,导致结算功能异常,添加这个豁免属性可解决问题。请问是否可通过函数实现?我尝试了以下代码但无效果,求解决思路:

add_filter( 'script_loader_tag', 'add_id_to_script', 10, 3 );

function add_id_to_script( $tag, $handle, $src ) {
    if ( 'select2.full.min.js' === $handle ) {
        $tag = '<script type="text/javascript" src="' . esc_url( $src ) . '" id="select2-js" data-cookieconsent="ignore"></script>';
    }

    return $tag;
}

问题原因

你的代码无效的核心是脚本句柄(handle)匹配错误。WooCommerce加载Select2时使用的句柄不是select2.full.min.js,而是标准的select2(部分WooCommerce版本可能用woocommerce_select2)。

修正后的代码

add_filter( 'script_loader_tag', 'add_cookie_consent_ignore_to_select2', 10, 3 );
function add_cookie_consent_ignore_to_select2( $tag, $handle, $src ) {
    // 匹配Select2的正确句柄,兼容不同版本
    if ( 'select2' === $handle || 'woocommerce_select2' === $handle ) {
        // 在原有脚本标签上追加属性,避免丢失默认属性
        if ( strpos( $tag, 'data-cookieconsent' ) === false ) {
            $tag = str_replace( '></script>', ' data-cookieconsent="ignore"></script>', $tag );
        }
    }
    return $tag;
}

关键说明

  1. 句柄确认:如果不确定句柄,可通过浏览器开发者工具查看对应<script>标签的data-handle属性,或者添加以下代码打印所有注册脚本的句柄:
    add_action( 'wp_enqueue_scripts', 'print_all_script_handles' );
    function print_all_script_handles() {
        global $wp_scripts;
        foreach( $wp_scripts->registered as $script ) {
            echo $script->handle . '<br>';
        }
    }
    
  2. 避免硬写标签:直接拼接新标签会丢失WooCommerce默认添加的defer/async等属性,用字符串替换的方式更安全。
  3. 重复添加防护:增加strpos判断,避免多次添加相同属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:45:08