基于 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 文本字段中添加 <script>
,OneTrust 对象就会在前面构建- 自动结束,但这非常有用!
如何在前端自动构建OneTrust Object?还是你的意思是js文件的名字?
如果需要,可以在第二个函数中添加所有代码
是的,让我测试一下,如果 OneTrust 在标题中添加了 <script>
标签,我可以连接到 wp_head
对吗?还是有其他具体的?
可以,你可以改成wp_head
以上是关于基于 ACF 值的入队脚本的主要内容,如果未能解决你的问题,请参考以下文章