对与jQuery 1.10.2不兼容的插件使用jQuery迁移

时间:2013-09-03 作者:mantis

我正在尝试使用一个jquery插件,该插件与Wordpress 3.6中的jquery 1.10.2不兼容,并且能够通过使用jquery migrate来修复它,而jquery migrate显然也随3.6一起提供。

我想我也许可以把它作为一种依赖关系包括在内,如下所示:

add_action(\'wp_enqueue_scripts\', \'tf_load_custom_scripts\');

function tf_load_custom_scripts() {

    wp_register_script(\'curtain\', get_stylesheet_directory_uri().\'/curtain.min.js\', array(\'jquery\', \'jquery-migrate\'), 2.0 ); 
    wp_register_script(\'curtain-instance\', get_stylesheet_directory_uri().\'/curtain-instance.min.js\', array(\'curtain\',\'jquery\',\'jquery-migrate\'), true ); 

    if( is_front_page() ) {
        wp_enqueue_script(\'curtain\');
        wp_enqueue_script(\'curtain-instance\');
    }


    wp_enqueue_script(\'custom_script\', get_stylesheet_directory_uri().\'/script.min.js\', array(\'jquery\'), 1.0, true );

}
但它仍然不起作用,所以我希望得到一些帮助。

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

您的wp_register_script() 电话:

wp_register_script(\'curtain-instance\', get_stylesheet_directory_uri().\'/curtain-instance.min.js\', array(\'curtain\',\'jquery\',\'jquery-migrate\'), true );
你错过了version 参数:

wp_register_script(
    // Handle
    \'curtain-instance\', 
    // Path
    get_stylesheet_directory_uri().\'/curtain-instance.min.js\', 
    // Dependencies
    array(\'curtain\',\'jquery\',\'jquery-migrate\'), 
    // Version
    // In footer?
    true 
);
尝试添加该参数:

wp_register_script(
    // Handle
    \'curtain-instance\', 
    // Path
    get_stylesheet_directory_uri().\'/curtain-instance.min.js\', 
    // Dependencies
    array(\'curtain\',\'jquery\',\'jquery-migrate\'), 
    // Version
    \'1.0\',
    // In footer?
    true 
);
还有两件事:

小心使用样式表目录与模板目录。除非你和一个Child Theme, 您需要使用get_template_directory_uri() 而不是get_stylesheet_directory_uri().

添加\\u操作(\'wp\\u enqueue\\u scripts\',\'tf\\u load\\u custom\\u scripts\');

函数tf\\u load\\u custom\\u scripts(){

wp_register_script( \'curtain\', 
    get_template_directory_uri().\'/curtain.min.js\', 
    array( \'jquery\', \'jquery-migrate\' ), 
    2.0 
); 
wp_register_script(
    \'curtain-instance\', 
    get_template_directory_uri().\'/curtain-instance.min.js\', 
    array( \'curtain\' ), 
    \'1.0\',
    true 
); 

if ( is_front_page() ) {
    wp_enqueue_script(\'curtain-instance\');
}


wp_enqueue_script(
    \'custom_script\', 
    get_template_directory_uri().\'/script.min.js\', 
    array( \'jquery\' ), 
    1.0, 
    true 
);
}

最后,请注意,当WordPress注册jQuery时,it defines jquery-migrate as a dependency:

$scripts->add( \'jquery\', false, array( \'jquery-core\', \'jquery-migrate\' ), \'1.10.2\' );
因此,请尝试删除jquery-migrate 依赖关系:

add_action(\'wp_enqueue_scripts\', \'tf_load_custom_scripts\');

function tf_load_custom_scripts() {

    wp_register_script( \'curtain\', 
        get_template_directory_uri().\'/curtain.min.js\', 
        array( \'jquery\' ), 
        2.0 
    ); 
    wp_register_script(
        \'curtain-instance\', 
        get_template_directory_uri().\'/curtain-instance.min.js\', 
        array( \'curtain\' ), 
        \'1.0\',
        true 
    ); 

    if ( is_front_page() ) {
        wp_enqueue_script(\'curtain-instance\');
    }


    wp_enqueue_script(
        \'custom_script\', 
        get_template_directory_uri().\'/script.min.js\', 
        array( \'jquery\' ), 
        1.0, 
        true 
    );

}

结束