問題描述
所以我正在使用 Starkers 來基於我的下一個 WP 主題,我遇到了一個小問題,我在 header.php 檔案中包含了我自己的 jQuery 版本,但是當我使用 Firebug 檢查我的網站時,我注意到 jquery 被下載了兩次,我做了一些挖掘,注意到不僅包括檔案,而且是 wp_head()功能。
在嘗試解決這個問題時,我注意到標頭檔案中的一個註釋,其中源自二十十個主題:
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head>, such
* as styles, scripts, and meta tags
*/
所以這裡是我的問題,我的印象是,jQuery 檔案必須在任何其他要使用它的檔案之前設定,而 wp_head()應該是<head> 元素中的最後一件事,現在我稍微感到困惑想知道我應該把 wp_head()放在頂部,所以 WP 包含的 jQuery 檔案將被用於所有的外掛,即使它不這樣做。
我在 wp_head()功能中註釋了 jQuery 行,但是管理頁面是必需的,所以我不得不把它放回來。
我還想使用 (至少實驗) 使用 Google CDN 版本的 jQuery,但不想包含它兩次!
我希望你明白我正在解釋什麼,關於我如何解決這個問題的任何建議將是最值得讚賞的。我也會感謝任何關於如何使用標頭檔案處理 JavaScript 檔案的建議。
謝謝!
最佳解決方案
從您的問題的措辭,您必須透過在模板中編寫<script> 標籤來新增指令碼。透過 wp_enqueue_script()在模板的 functions.php 中新增自己的指令碼,適當地設定對 jQuery 的依賴性,wp_head()將為您新增指令碼。
function my_scripts() {
wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
}
add_action('template_redirect', 'my_scripts');
有關更多資訊,請參閱 codex page 。
次佳解決方案
我建議看看 5 Tips for using jQuery with WordPress 。除此之外,它顯示了從 Google 的庫載入 jQuery 所需的程式碼:
function my_init() {
if (!is_admin()) {
// comment out the next two lines to load the local copy of jQuery
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://googleajax.admincdn.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
wp_enqueue_script('jquery');
}
}
add_action('init', 'my_init');
您也可以檢視 Use Google Libraries 外掛。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。