问题描述

我有这个麻烦了我不知道如何做到正确的方式,我读了这么多不同的技术和方法来做,我不知道该怎么做。

我有一些问题和麻烦: – 我应该注销 WordPress 中包含的 jQuery 吗?我现在正在使用以下代码:

function uw_load_scripts() {
    // De-register the built in jQuery
    wp_deregister_script('jquery');
    // Register the CDN version
    wp_register_script('jquery', 'http://googleajax.admincdn.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false); 
    // Load it in your theme
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'uw_load_scripts' );

这个工作。我应该为所有人这样做,对于所有人,除了管理员 (所以后端使用 WordPress 版本?):

if (function_exists('load_my_scripts')) {  
function load_my_scripts() {  
    if (!is_admin()) {  
    wp_deregister_script( 'jquery' );  
    wp_register_script('jquery', 'http://googleajax.admincdn.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false); 
    wp_enqueue_script('jquery');   
    }  
}  
}  
add_action('init', 'load_my_scripts');

这个版本实际上不起作用,我得到了 WordPress jQuery-version 而不是谷歌。

另外,如何添加自己的脚本 (滑块脚本,modernizr 和我自己的 custom.js) 的正确方法?我想我应该通过 functions.php 这样做,而不是像我现在这样做的标题,但我不确定我该怎么做。

最佳解决方案

第一经验法则:不要注销 core-bundled 脚本并替换其他版本,除非您绝对确定由于版本更改,主题,插件或核心本身不会中断。真的,除非你绝对需要一个替代版本的 core-bundled 脚本,只需使用与核心捆绑的内容。

其次,我强烈建议您将 wp_enqueue_scripts 挂接到脚本注册和入队,而不是 init 。 (它在 init 上工作,但从 play-nicely-with – 其他角度来说,最好使用最语法正确的钩子。)

第三,要排列自己的自定义脚本,您使用与上述相同的方法:

<?php
function wpse45437_enqueue_scripts() {
    if ( ! is_admin() ) {
        $script_path = get_template_directory_uri() . '/js/';
        // Enqueue slider script
        wp_enqueue_script( 'wpse45437_slider', $script_path . 'slider.js', array( 'jquery' ) );
        // Enqueue modernizr script
        wp_enqueue_script( 'wpse45437_modernizr', $script_path . 'modernizr.js', array( 'jquery' ) );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse45437_enqueue_scripts' );
?>

只需添加您需要排入的任何脚本。

次佳解决方案

希望这有助于查找 wp_enqueue_scripts 的代码,以获取更多信息。

  1. 不要使用 init 进行排队。将 wp_enqueue_scripts 用于 front-end 和 admin_enqueue_scripts 用于管理端。您可以使用 init 来注册脚本。

  2. 挂钩 wp_enqueue_scripts 仅在 front-end(而不是 log-in 页面) 上触发 – 因此您不必检查 is_admin()

  3. 除非你有特定的理由去做,否则我建议使用 functions.php 为主题或在 plug-in 中注册和排队脚本。你简单地说:

     function myprefix_load_scripts() {
       // Load scripts here
     }
     add_action( 'wp_enqueue_scripts', 'myprefix_load_scripts' );
    
  4. 如果目的是在使用短代码时排入脚本,则您可能希望在短代码回调中使用 wp_enqueue_script,以便在需要时将其排队 (这将在 3.3 之后将其打印在页脚中) 。

  5. 你不应该在管理端的 re-register 现有的 jQuery 。你可以打破一些东西:D 。

  6. Plug-ins 不应该是现有的 jQuery 的 re-register 。

  7. 你应该衡量 re-registering jQuery 的优点和缺点。例如,如果您注册旧版本 (可能不是现在,但将来…) 可能会破坏一些 plug-ins 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。