问题
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