問題描述
我有這個麻煩了我不知道如何做到正確的方式,我讀了這麼多不同的技術和方法來做,我不知道該怎麼做。
我有一些問題和麻煩: – 我應該註銷 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 的代碼,以獲取更多信息。
-
不要使用
init進行排隊。將wp_enqueue_scripts用於 front-end 和admin_enqueue_scripts用於管理端。您可以使用init來註冊腳本。 -
掛鈎
wp_enqueue_scripts僅在 front-end(而不是 log-in 頁面) 上觸發 – 因此您不必檢查is_admin()。 -
除非你有特定的理由去做,否則我建議使用
functions.php為主題或在 plug-in 中註冊和排隊腳本。你簡單地説:function myprefix_load_scripts() { // Load scripts here } add_action( 'wp_enqueue_scripts', 'myprefix_load_scripts' ); -
如果目的是在使用短代碼時排入腳本,則您可能希望在短代碼回調中使用
wp_enqueue_script,以便在需要時將其排隊 (這將在 3.3 之後將其打印在頁腳中) 。 -
你不應該在管理端的 re-register 現有的 jQuery 。你可以打破一些東西:D 。
-
Plug-ins 不應該是現有的 jQuery 的 re-register 。
-
你應該衡量 re-registering jQuery 的優點和缺點。例如,如果您註冊舊版本 (可能不是現在,但將來…) 可能會破壞一些 plug-ins 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。