根据帖子中的高级自定义字段有条件地加载JavaScript

时间:2016-11-04 作者:jshwlkr

我正在建立一个网站/主题,其中帖子内容是以模块化的方式(主要是,但不限于)使用ACF的灵活内容字段编写的。这些字段可以在公共前端附加JavaScript功能。例如,您可能有一个应用了视差的图像上载或一个应用了单击或悬停动画的文本块。我正在尝试确定有条件地加载可能支持此功能的不同JavaScript库的最有用的方法(在帖子中,正如公众所看到的,我不是在谈论管理方面)。具体来说,我试图避免总是加载所有内容,而是希望根据帖子中实际存在的字段加载特定的库。有没有一种既定的方法,除了强力循环内容多次,先检查字段,然后再显示字段之外?

2 个回复
最合适的回答,由SO网友:JHoffmann 整理而成

ACF具有细粒度filters 用于加载字段时。

add_action( \'wp_enqueue_scripts\', \'register_my_scripts\', 5 );
function register_my_scripts() {
    wp_register_script( \'my-script\', \'path-to/my-script.js\', array(), \'version\', true );
}

add_filter(\'acf/load_field/name=my_field_name\', \'load_field_my_field_name\');
function load_field_my_field_name( $field ) {
    wp_enqueue_script( \'my-script\' );
    return $field;
}
通常,应将所有脚本排入队列wp_enqueue_scripts 钩所以,您应该确保您的脚本及其依赖项(尚未加载)可以加载到页脚中。这样,当内容中的字段被访问时,脚本就会排队。

SO网友:lavekyl

我建议使用ACF中的真/假来确定是否应该加载所引用的脚本。并为这些特定脚本创建一个函数,以便在“True”时加载它们。像这样的。。。

<?php

  if( get_field(\'true_false_field\') ) { 
    add_action( \'wp_enqueue_scripts\', \'enqueue_the_script\' );
  }

  function enqueue_the_script() {
    wp_enqueue_script( \'my-js\', \'filename.js\', false );
  }

?>