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

如何基于ACF字段值控制OneTrust脚本是否在前端加载

需求完全可以实现,以下是具体可落地的实现方案:

方案1:通过钩子动态输出脚本(推荐)

直接在主题functions.php中添加逻辑,读取ACF字段判断后输出脚本,无需调整现有ACF配置:

add_action('wp_footer', 'custom_load_onetrust_script', 10);
function custom_load_onetrust_script() {
    // 单页/文章维度配置字段用下面的写法
    $is_enable = get_field('enable_onetrust', get_the_ID());
    $script_content = get_field('onetrust_script_tag', get_the_ID());

    // 如果是全局选项页配置的字段,把上面两行替换为下面的
    // $is_enable = get_field('enable_onetrust', 'option');
    // $script_content = get_field('onetrust_script_tag', 'option');

    if ($is_enable && !empty($script_content)) {
        // 处理文本区域的转义字符,输出原始脚本
        echo html_entity_decode($script_content);
    }
}

注意:添加完上述代码后,你需要把之前自动入队渲染脚本的逻辑关掉,避免重复加载。

方案2:过滤页面源码移除脚本(适配已自动渲染的场景)

如果你的脚本已经被自动插入到页面源码中,不想调整原有输出逻辑,可以用输出缓冲在开关关闭时直接移除对应脚本:

add_action('template_redirect', 'custom_disable_onetrust_script');
function custom_disable_onetrust_script() {
    $is_enable = get_field('enable_onetrust');
    // 开关关闭时执行过滤
    if (!$is_enable) {
        ob_start(function($html) {
            // 可根据你实际的OneTrust脚本特征修改正则匹配规则
            return preg_replace('/<script[^>]*onetrust[^>]*>.*?<\/script>/is', '', $html);
        });
    }
}
方案3:直接修改主题模板代码

如果你是直接在header.php/footer.php等主题模板中写了输出脚本的代码,直接加一层条件判断即可:

<?php 
// 同样根据字段配置维度调整get_field参数
if (get_field('enable_onetrust')) {
    echo html_entity_decode(get_field('onetrust_script_tag'));
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:00