duanpu1111
2019-04-04 21:12
浏览 87
已采纳

如何在Wordpress functions.php中使用高级自定义字段对脚本进行入队和出列?

I want to create checkboxes with Advanced Custom Fields in an admin panel in the Wordpress backend that can enable and disable scripts.

I created a checkbox field, called it import_animejs and checked it. Then used acf/load_field to enqueue the script but I am missing something as it's not working.

Here is my code:

function acf_checkbox_scripts() {
    wp_register_script('animejs', get_stylesheet_directory_uri() . '/bower_components/animejs/lib/anime.min.js', array('jquery'),'1.1', true);
}
add_action( 'wp_enqueue_scripts', 'acf_checkbox_scripts', 5 );

function load_field_import_animejs( $field ) {
    wp_enqueue_script('animejs');
    return $field;
}
add_filter('acf/load_field/name=import_animejs', 'load_field_import_animejs');

I expect the filter to recognise that import_animejs is ticked and enqueue anime.js but it doesn't.

Update: many thanks to Lachlan's answer this works, and just for clarification I completely removed the acf/load_field "load_field_import_animejs" function in the code I posted above.

图片转代码服务由CSDN问答提供 功能建议

我想在Wordpress后端的管理面板中创建带有高级自定义字段的复选框,可以启用和禁用脚本。

我创建了一个复选框字段,称为 import_animejs 并检查它。 然后使用 acf / load_field 将脚本排入队列,但我遗漏了一些内容,因为它不是 工作。

这是我的代码:

  function acf_checkbox_scripts(){
 wp_register_script('animejs',get_stylesheet_directory_uri()。'  /bower_components/animejs/lib/anime.min.js',array('jquery'),'1.1',true); 
} 
add_action('wp_enqueue_scripts','acf_checkbox_scripts',5); 
 
function load_field_import_animejs  ($ field){
 wp_enqueue_script('animejs'); 
返回$ field; 
} 
add_filter('acf / load_field / name = import_animejs','load_field_import_animejs'); 
   
 
 

我希望过滤器能够识别出import_animejs被勾选并将anime.js排入队列,但事实并非如此。

更新:非常感谢Lachlan的答案, 为了澄清,我在上面发布的代码中完全删除了acf / load_field“load_field_import_animejs”函数。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doujiebo9849 2019-04-05 02:35
    已采纳

    You need to do an if statement and check if the field is true

    This can be done by:

    function acf_checkbox_scripts() {
        if ( get_field( 'import_animejs', 'options' ) ) { // only include 'options' if the acf field is on an acf options page, if not use the post_id of that page
            wp_register_script('animejs', get_stylesheet_directory_uri() . '/bower_components/animejs/lib/anime.min.js', array('jquery'),'1.1', true); 
            wp_enqueue_script('animejs');
        }
    }
    
    add_action( 'wp_enqueue_scripts', 'acf_checkbox_scripts', 5 );
    
    点赞 打赏 评论

相关推荐 更多相似问题