如何基于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
相关产品推荐
相关产品推荐

