轉自:http://www.wordpress.la/10-things-to-know-about-theme-modification.html
不滿足於WordPress預設功能的站長們都會對WordPress強大的擴充功能感到好奇,進而嘗試自己修改主題。 對WordPress主題進行修改時,沒有必要精通PHP,你需要的,只是一點基礎的HTML知識和一些解決問題的常識。
下載一份WordPress主題檔案的副本,儲存,然後開啟這些主題問題,根據下面的步驟以及WordPress手冊中的說明逐步瞭解主題檔案的運轉以及修改方法。
這篇文章是關於WordPress你需要知道的100件事系列的一部分。
1. Widgets實現了(通常位於側欄/頁尾中的)內容/外掛程式的拖拽功能
這是基本知識,不過的確還有人不知道什麼是widget(小工具)或者如何使用widget。 WordPress主題支援widget功能,如果你進入WordPress網站後台"外觀"下的"小工具"選項,會看到所有支援拖放widget的版塊。 WordPress內建若干核心widget(比如頁面、分類、標籤、最近文章等),各種外掛程式也有內建的widget。
2. 一個WordPress主題可以有無限個支援widget的地區
Widget這個概念很簡單,很多人也習慣於側欄或者footer的widget小工具。 你或許不知道的是,WordPress網站的各個部分都是支援widget的,你可以(字面意義)在任何位置上添加widget小工具,所添加的小工具數量也完全由你自己決定。 關於實現WordPress多地區widget的具體方法,請參考這篇文章。
3. 支援widget的地區可以是"有限制的"(針對特定條件或頁面)
有時候你可能需要只在特定條件下顯示widget。比如首頁專用widget,或者特定文章/分類/標籤頁專用widget。 這時候你可以利用WordPress的條件標籤。
在這種情況下,可以在functions.php裡使用與註冊多地區widget時相同的代碼,不過之後需要在調用widget地區的代碼內添加條件陳述式代碼。 仍然使用上一個例子,如果調用widget的地區是footer部分,並且你只需要在首頁的footer上實現顯示效果,需要用到的是下面這段代碼:
<?php // 只讓首頁的footer支援widget if (is home() {if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer Widget') ) : ?><?php endif; ?> } else { }4. WordPress 3.0以上版本添加了自訂"菜單"功能(類似於widget,但為導航專用)
WordPress 3.0版本引入了WordPress菜單(導覽功能表)功能。 。 和widget一樣,你也可以通過在functions.php檔案註冊菜單——添加到主題頁面代碼這樣的步驟,在WordPress主題的任何部分添加菜單地區。 同樣你也可以"有條件地"顯示菜單地區(方法同第3點)。
5. WordPress核心主題檔案包括index.php,single.php,page.php,header.php,footer.php,style.css
有些WordPress主題結構非常複雜,有些卻只包括幾個檔案。 如果你有興趣,可以進一步瞭解WordPress主題結構與工作機制。 關於WordPress主題的結構解析,請參考這篇文章和這篇文章。
6. 你可以自訂用於特定條件的header、footer和樣式表
這仍然會用到WordPress條件標籤。 通過在WordPress主題代碼裡使用條件標籤語句,可以在主題代碼裡建立並使用多個header、footer甚至樣式表。
假設你希望首頁的header部分不同於網站其他頁面,只需要在index.php檔案裡加上:
<?php if (is home() {get_header(home); } else {get_header(); }
然後將header.php另存新檔header-home.php,進行相應代碼添加或改動,然後上傳到主題目錄下即可。 對footer、側欄、樣式表等也可以使用同樣的方法。
下面是WordPress手冊中對相關函數的介紹:
get_header
get_footer
get_sidebar
get_stylesheet
7. 利用自訂佈景主題頁面"模板"可以顯示特別的頁面
你可以利用很多方法使某個頁面看上去與眾不同或者具有特別功能。 也許你可能想要很多個與眾不同的頁面。 你可以根據主題建立一個頁面模板,然後在需要時把這個模板指派給某個頁面。
步驟如下:
1. 從主題檔案中下載一份page.php檔案,另存新檔page-test1.php(或者其他任何名字)。
2. 在一個文字編輯器(例如Notepad)中開啟這個檔案,在檔案頂部添加以下內容:
<?php/*Template Name: Test 1*/?>
然後儲存檔案並上傳到主題目錄下,之後你可以在後台編輯任何靜態頁面。 在右側的"頁面屬性"下可以看見一個叫做"模板"的下拉式菜單,如果剛才檔案上傳成功,你會看見一個叫做"Test 1"的新模板。 選中這個模板然後更新頁面,頁面重新載入後新的模板就派上用場了。
你可以為不同頁面建立不同的主題頁面模板,然後在後台匹配使用。
8. 你可以設定主迴圈顯示的文章數量
大多數WordPress使用者都適應了一個事實:每個存檔類型的頁面(首頁、分類頁、標籤頁等)一次顯示十篇文章。 首先你需要知道的是(如果你還不知道),在所有主題頁面中,"主迴圈(the loop)"是調用這些文章的代碼主幹。
你可能不知道的是,不用the_loop而用wp_query函數也可以顯示任何類型的文章,例如:
//僅檢索指定頁面<?php$args = array('post_type' => 'page','post__in' => array( '595', '33', 44 ));$the_query = new WP_Query( $args );?>//顯示某個作者的文章$query = new WP_Query( 'author=123' );//顯示若干個作者的文章$query = new WP_Query( 'author=2,6,17,38' );//顯示指定分類下的文章$query = new WP_Query( 'cat=4' );//顯示指定標籤下的文章$query = new WP_Query( 'tag=cooking' );
甚至可以用wp_query來顯示近期文章,例如:
<?php $recentPosts = new WP_Query(); $recentPosts->query('showposts=3');?><?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?> <li></li> <?php endwhile; ?>9. 你可以設定每一篇文章(本文或摘要)的顯示效果
每個包含the_loop的WordPres主題檔案都通過特定函數分別調用文章的各部分內容。 如果你看見function the_content,這表示要顯示的是文章的完整內容。 把其中的content改成excerpt,頁面顯示的內容會變成文章的摘要而不再是全文。
如果需要在首頁上更改為顯示摘要,就在index.php裡把the_content改成the_excerpt。如果是存檔頁,就修改archive.php檔案。如果要求搜尋結果顯示摘要,就修改search.php,以此類推。
10. 做任何改動前一定要備份
不要害怕修改WordPress主題。 不過做任何修改前,請在本地案頭上備份主題檔案,然後進入後台"外觀"菜單下的編輯選項慢慢研究吧。