問題描述

我有這個麻煩了我不知道如何做到正確的方式,我讀了這麼多不同的技術和方法來做,我不知道該怎麼做。

我有一些問題和麻煩: – 我應該註銷 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。