基于 ACF 值的入队脚本

Posted

技术标签:

【中文标题】基于 ACF 值的入队脚本【英文标题】:Enqueue script based on ACF value 【发布时间】:2022-01-12 17:03:28 【问题描述】:

所以我想看看这是否可能以及我如何能够解决这个问题 - 但这是我正在使用的:

我创建了一个 ACF 组,它有两个字段:

启用 OneTrust,名称:enable_onetrust,单选按钮 脚本标签,名称:onetrust_script_tag,文本区域

当我添加 OneTrust 提供的 <script> 标签时,它会自动排队并在前端呈现并构建对象,因此我根本不会在 functions.php 文件中调用 wp_enqueue_script .

这是 UI 中的设置:

我想要做的是创建一个条件,当enable_onetrust 设置为 no/false 时,不要将脚本排入队列,否则将其排入队列。

由于没有在任何地方使用wp_enqueue_script 调用脚本,我们该怎么做呢?

【问题讨论】:

将脚本加入队列的代码是什么? 它根本没有将脚本排入队列的代码,发生的情况是它从数据库中读取<script> 标签并自动从 OneTrust 构建对象。如果我注释掉 ACF 文本区域内的脚本,OneTrust 对象就会消失。 【参考方案1】:

您必须检查启用 OneTrust 字段的字段值。 我会为此使用一个真/假字段。

如果你有一个真/假字段,你可以这样做:

<?php 
function my_assets() 

    $enable_onetrust = get_field('enable_onetrust'); 

    if ( $enable_onetrust == true ) :
        wp_enqueue_script( 'onetrust', 'PATH-TO-JS', , false, true );
    
    endif;

add_action( 'wp_enqueue_scripts', 'my_assets' );
  
?>

对于其他脚本,您可以使用如下内容:

<?php 
add_action( 'wp_footer', function() 
    $enable_onetrust = get_field('enable_onetrust'); 

    if ( $enable_onetrust == true ) : ?>     

        <script>
            // Your Script
        </script>

    <?php endif; ?>

<?php , 99 );

【讨论】:

感谢@Cray,这非常有帮助!我现在将对此进行测试并仔细检查,如果我有到 PATH-TO-JS 的直接路径会容易得多,但是一旦我在 ACF 文本字段中添加 &lt;script&gt;,OneTrust 对象就会在前面构建- 自动结束,但这非常有用! 如何在前端自动构建OneTrust Object?还是你的意思是js文件的名字? 如果需要,可以在第二个函数中添加所有代码 是的,让我测试一下,如果 OneTrust 在标题中添加了 &lt;script&gt; 标签,我可以连接到 wp_head 对吗?还是有其他具体的? 可以,你可以改成wp_head

以上是关于基于 ACF 值的入队脚本的主要内容,如果未能解决你的问题,请参考以下文章

php 本地化脚本 - 将变量传递给入队脚本

php 本地化脚本 - 将变量传递给入队脚本

php 入队脚本

php 入队脚本

PHP WordPress入队脚本 - jQuery

如何编辑我的入队脚本函数以包含 Internet Explorer 和页面模板样式表?