Wordpressの管理領域でjQuery UIプラグインを使用したことがある人はいますか?
私はjQuery UIで日付ピッカー機能を使用しようとしていましたが、それはwordpress adminの組み込みjQueryと衝突しています。 http://docs.jquery.com/UI/Datepicker
これは私がコンソールで得るエラーメッセージです:
Uncaught TypeError: Cannot read property 'apply' of undefined
a.widget.a.extend._trigger
b.Widget._createWidget
b.widget.b
b.widget.bridge.b.fn
c.extend.each
c.fn.c.each
b.widget.bridge.b.fn
postboxes.init
postboxes.add_postbox_toggles
(anonymous function)
c.extend.ready
L
この衝突を回避するために私は何ができるでしょうか。
Jqueryを含めるために使用されるコードを追加します。
wp_register_script( 'jquery-tooltip', 'http://cdn.jquerytools.org/1.2.5/jquery.tools.min.js');
wp_register_script( 'jquery-ui-datepicker', get_bloginfo('template_directory') . '/js/jquery-ui-1.8.8.custom.min.js' );
wp_register_script( 'jquery-admin-internal', get_bloginfo('template_directory') . '/js/jquery.admin.internal.js' );
wp_register_script( 'jquery-internal', get_bloginfo('template_directory') . '/js/jquery.internal.js' );
function enqueue_admin_jquery() {
wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_script('jquery-admin-internal');
}
add_action('admin_init', 'enqueue_admin_jquery');
それは私がjQuery UIのバージョン1.7.3を使ったときにうまくいきました。
バージョン1.8.9はWordpressの管理者によって使用されるjQuertとの互換性の問題があるようです。
これが私のカレンダープラグインに含まれているものです:
// Alternative solution for loading scripts only in plugin page
if( (is_admin() ) && (isset($_GET['page']))) {
// Register scripts and styles
add_action('admin_init', 'wp_eventcal_init');
}
function wp_eventcal_init() {
// Only load these scripts in Admin
wp_deregister_script('jquery-ui-core');
wp_register_script('jquery-ui','http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.js',array('jquery'));
wp_enqueue_script('ui-datepicker', plugins_url('js/jquery.ui.datepicker.min.js',__FILE__));
wp_enqueue_script('ui-timepicker', plugins_url('js/jquery.timepicker.js',__FILE__));
wp_enqueue_script('wp-calendar', plugins_url('js/wp-eventcal.js',__FILE__));
wp_enqueue_style('event_cal_css', plugins_url('styles/eventcal.css',__FILE__));
}
それから私はちょうどこれをする:
jQuery("#event_startTime, #event_endTime").timePicker();
私は3.1のいくつかのインストールが必要なサポートJQuery UI 1.8.9スクリプトのすべてをロードしていないと思います。特に "widgets.js"。したがって、「ウィジェット」エラーです。