wp_enqueue_script for widget form

谁说我不能喝 提交于 2020-01-14 05:17:27

问题


I'm creating a widget and I need to enqueue a script for the widget form in the admin panel (and the customizer). I've tried a lot a ways :

function cf_enqueue_admin_script() {
    wp_enqueue_script('admin_custom_script', get_template_directory_uri() . '/js/admin.js', array('jquery', 'wp-color-picker'), false, true);
}
add_action('admin_enqueue_scripts', 'cfstcyr_admin_custom_script');

and

function cf_enqueue_admin_script() {
    wp_enqueue_script('admin_custom_script', get_template_directory_uri() . '/js/admin.js', array('jquery', 'wp-color-picker'), false, true);
}
add_action('admin_print_scripts-widgets.php', 'cf_enqueue_admin_script'));

and

class cfstcyr_plugin extends WP_Widget {
    public function __construct() {
        ...
        add_action('admin_print_scripts-widgets.php', array(&$this, 'load_scripts'));
    }
    function load_scripts() {
        wp_enqueue_script('admin_custom_script', get_template_directory_uri() . '/js/admin.js', array('jquery', 'wp-color-picker'), false, true);
    }
}

and

class cfstcyr_plugin extends WP_Widget {
    public function form() {
        ...
        wp_enqueue_script('admin_custom_script', get_template_directory_uri() . '/js/admin.js', array('jquery', 'wp-color-picker'), false, true);
    }    
}

It works but when I save without refreshing the page or when I'm in the Customizer it doesn't work. I also tried this :

class cfstcyr_plugin extends WP_Widget {
    public function form() {
        ...
        <script type="text/javascript">
            ...
        </script>
    }    
}

But it triggers multiple time.

I really need to add Javascript (Media Uploader, Color Picker, etc) but I can't make it work after I've save the page without refreshing nor in the customizer.

So what I want is : my_custom_widget.php

class cfstcyr_plugin extends WP_Widget {
    public function form() {
       // Option form for widget
       <p>Click here!</p>
    }
}

and my widget.js

(function ($) {
    $(document).ready(function () {
        $('.p').click(function() {
            alert('Hello World!');
        });
    });
}(jQuery));

Thank you very much!

来源:https://stackoverflow.com/questions/46506029/wp-enqueue-script-for-widget-form

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!