我有一个WordPress网站(3.5.1),我想在我的插件中添加一个datepicker。默认情况下,这没有用,所以我四处搜索,发现我必须使用wp_register_script()
和wp_enqueue_script()
加载库。添加脚本后,我有一个datepicker。完美。
我想更改小部件布局,发现它已被破坏。我可以拖动小部件但是当它们被丢弃时它们会冻结#39;我试图关闭我添加的jQuery库。小部件模块再次正常工作,但我的日期选择器不再起作用了。
所以,我在functions.php中有这段代码:
add_action('init', 'change_jquery');
function change_jquery() {
wp_deregister_script('jquery');
wp_deregister_script('jquery-ui-core');
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js', false, '1.9.0');
wp_register_script('jquery-ui-core', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js', false, '1.10.0');
wp_register_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/ui-lightness/jquery-ui.css');
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_style('jquery-ui-css');
}
有谁知道是什么原因导致了我的问题?也许我已宣布双库?我对此很陌生,并且不知道在哪里搜索问题。
答案 0 :(得分:0)
您应该使用wp_enqueue_scripts
挂钩进行操作
add_action('wp_enqueue_scripts', 'change_jquery');
这可能无法解决您的问题,但它仍然是用于排队脚本的正确钩子。
答案 1 :(得分:0)
如果datepicker用于插件的前端而不是后端,请使用is_admin()
条件标记仅在前端加载它(不是管理面板):
function change_jquery() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_deregister_script('jquery-ui-core');
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js', false, '1.9.0');
wp_register_script('jquery-ui-core', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js', false, '1.10.0');
wp_register_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/ui-lightness/jquery-ui.css');
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_style('jquery-ui-css');
}
}
add_action('wp_enqueue_scripts', 'change_jquery');
答案 2 :(得分:0)
据我所知,这可能是一个javascript错误。 Wordpress在处理jquery的$变量时非常糟糕。你可以做两件事:
1)尝试添加用'jQuery'替换所有'$'的文件。请注意,“Q”必须以大写字母书写,“j”不是大写字母。这对我有用。例如:
//Original javascript in wordpress.
function some_function(){
$('#some_id').click('some_function');
}
//Adapted javascript in wordpress.
function function(){
jQuery('#some_id').click('some_function');
}
2)你可以尝试在jquery中创建一个无冲突的包装器。我还没有测试过这个,但它应该可行。您可以找到更多信息here。