0

我有一个 WordPress 站点 (3.5.1),我想在其中向我的插件添加一个日期选择器。默认情况下这不起作用,所以我四处搜索,发现我必须使用wp_register_script()and加载库wp_enqueue_script()。添加脚本后,我有一个日期选择器。完美的。

我想更改小部件布局,但发现它已损坏。我可以拖动小部件,但是当它们被放下时,它们会“冻结”。我试图关闭我添加的 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');
}

有谁知道是什么导致了我的问题?也许我已经声明了双库?我对此很陌生,不知道在哪里寻找问题。

4

3 回答 3

0

据我所知,这可能是一个 javascript 错误。Wordpress 在处理 jquery 的 $-variable 方面很糟糕。你可以做两件事:

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 中创建一个无冲突包装器。我还没有对此进行测试,但它应该可以工作。你可以在这里找到更多信息。

于 2013-03-14T21:10:31.340 回答
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');
于 2013-03-14T20:59:46.757 回答
0

您应该使用wp_enqueue_scripts钩子来执行您的操作

add_action('wp_enqueue_scripts', 'change_jquery');

这可能无法解决您的问题,但它是用于将脚本加入队列的正确钩子。

于 2013-03-14T20:53:02.730 回答