在設計WordPress主題時,我發現在functions.php文件里添加一套通用的自定義函數將會大大提高開發效率,因為這樣我就可以不必每次開發主題時都需先查找然后復制同樣的函數。因此我先搞定functions.php模板然后從那里開始創建主題,模板里把一些必要的準備工作都做好了,包括:
這些函數讓我喜歡的共同點就是它們都非常簡單明了、高效。此functions.php 模板目前包含了十五個函數,并且還在不斷改善中。雖然并不是所有人都會需要使用文件中的所有函數,但我的目的是將這個模板修改為適合大家使用的通用型模板,能夠讓你通過這些真正實用的函數找到主題開發的突破口。
在這篇文章里,我先向大家解釋下每個函數,然后將所有這十五個函數融合在一起放入到functions.php模板中。你只要復制并粘貼本文最后的代碼或是獲取 functions.php文件的壓縮包 ,就可以通過此模板享受WordPress的基本功能,為您的開發帶來的極大的便利。
WordPress2.8以后,你都可以在頭部區域添加所有相關的feed鏈接(主體、評論、分類等),不過這并不是默認的,你需要添加下面的代碼來運行:
// add feed links to header
if (function_exists('automatic_feed_links')) {
automatic_feed_links();
} else {
return;
}
這段代碼先檢查你是否使用可兼容的WordPress版本,然后再啟用自動geed鏈接。幾點注意事項:第一,此方法是假設你沒有手動在頭部添加任何feed鏈接。第二,根據 最近這個Trac ticket,似乎這個功能與add_theme_support已經整合在一起了。
如何包含 jQuery ? 你可以在主題的functions.php文件里添加下面的代碼:
// smart jquery inclusion
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery',
("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false);
wp_enqueue_script('jquery');
}
這個代碼可以確保只包含一份jQuery,并從谷歌服務器上訪問它,節省帶寬同時訪問時還有緩存上的優勢。注意,這段代碼必需放在嵌套評論函數的前面才能正常運行。
一般來說,啟用嵌套評論需要在頭部區域添加一小段代碼到wp_head 標簽的前面。經過一次小實驗后,我發現你可以在functions.php文件里添加這段代碼:
// enable threaded comments
function enable_threaded_comments(){
if (!is_admin()) {
if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
wp_enqueue_script('comment-reply');
}
}
add_action('get_header', 'enable_threaded_comments');
這有助于保持 <head> 文件的整潔性,注意,這個函數需要放置在jQuery-inclusion函數的后面才能正常運作。