WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
WordPress:Theme Development
導航: 上一級 | WordPress | 首頁 | WordPress中文論壇 | WordPress主機 | CMS程序 | 論壇程序 | ECShop | ShopNC | PowerEasy
下面的文章是關于發(fā)展和設計你自己的WordPress主題。如果你想要學習更多的關于怎樣安裝和使用主題的知識,請查看關于使用主題的文件。這個話題與使用主題不同,因為它探討了寫代碼來創(chuàng)建你自己的主題而不是激活主題,或者在哪兒能得到新主題的技術方面。
你可能因為自己使用或者因為發(fā)行而發(fā)展新主題。
為什么要創(chuàng)建WordPress 主題[ ]
WordPress主題是合作在一起的文件和樣式用來創(chuàng)建一個WordPress站點的外觀或者呈現(xiàn)方式。每個主題可能有所不同,為每個用戶提供許多選擇,用戶利用這些選擇來立即地更改它們的站點的外觀。你為什么要創(chuàng)建你自己的WordPress主題?
- 創(chuàng)建你自己的獨特的WordPress站點外觀
- 要利用模板, 模板標簽, 和 WordPress Loop來產(chǎn)生不同的網(wǎng)頁結果和外觀。
- 為具體的站點功能提供可供選擇的模板,例如類別網(wǎng)頁和搜索結果網(wǎng)頁。
- 快速地在兩個站點布局之間進行切換,或者利用一個主題或者樣式切換器來允許用戶改變你的站點的外觀。
- 設計WordPress主題這樣其他人可能通過公共發(fā)行的版本喜歡你的設計。
一個WordPress主題也擁有許多的優(yōu)勢。
- 將呈現(xiàn)樣式和模板文件從系統(tǒng)文件中分開,這樣站點更新的時候,不會使站點的視屏產(chǎn)生巨大的變化。
- 它允許自定義那個主題獨特的外觀和網(wǎng)頁內(nèi)容。
- 它能夠快速地改變一個WordPress站點的外觀和整體效果。
- 它不需要WordPress用戶來學習CSS,HTML,和PHP來擁有一個好的站點外觀。
你為什么應該創(chuàng)建你自己的WordPress主題?這才是真正的問題。
- 這是學習更多的關于CSS,HTML/XHTNL,和PHP知識的一次機會。
- 這是一個能利用你的專業(yè)知識使CSS,HTML/XHTML,和PHP運行的機會。
- 這具有創(chuàng)造性。
- 這非常地有趣(大多數(shù)時間)。
- 如果你將它公開發(fā)行,你會感覺良好,因為你與之分享,并且返回了一些東西WordPress 團隊 (好的,bragging rights!)
一個主題的解析[ ]
WordPress主題位于wp-content/themes/中的子目錄中。主題的子目錄包含有所有的主題的樣式表文件,模板文件,一個任意的函數(shù)文件(functions.php),和圖像。例如,一個叫做"測試"的主題可能會在wp-content/themes/test/目錄中。
WordPress包含有兩個主題可以下載,一個是"經(jīng)典的" 一個是"默認的"主題。這兩個主題是不同的并且使用不同的函數(shù)和標簽來產(chǎn)生它們的網(wǎng)頁內(nèi)容和外觀。為這些主題仔細地檢查文件來知道怎樣更好地建立你自己的主題文件。
WordPress主題除了圖像外,包括三種主要類型的文件。一是樣式表稱為style.css,這控制了網(wǎng)頁的外表(外觀), 二是有選擇的函數(shù)文件(functions.php). 其他的文件是模板文件,這控制著從數(shù)據(jù)庫到被展示成一個網(wǎng)頁的網(wǎng)頁產(chǎn)生信息的方式,讓我們看下這些個性化的。
主題樣式表[ ]
除了提供你的主題的CSS樣式信息外,樣式表,style.css 必須提供評論形式主題的詳細信息。兩個主題不能有同樣的詳細信息列在它們的評論標題上,因為這會引起主題選擇對話的錯誤。如果你通過復制一個現(xiàn)存的主題來制作你自己的主題,首先要確定你已經(jīng)更改了這個信息。
下面是樣式表前幾行的例子,稱作樣式表標題,是主題的"Rose":
/* 主題名: Rose 主題 URI: 主題的主頁 描述: 一個注意的描述 作者:你的名字 作者URI: 你的-URI 模板: 使用-這個-來-定義-一個-母-主題—任意的 版本: 一個-數(shù)字—有選擇的 . 如果有的話,一般的評論/許可聲明。 . */
如果存在的話,最簡單的主題只包括一個style.css文件和圖像。要創(chuàng)建這樣的一個主題,你必須通過在style.css標題評論中編輯Template:行,來規(guī)定一套模板來繼承使用主題。例如,如果你想要"Rose"主題來繼承其它的一個稱作"測試"的主題的模板,你就會將評論中的Template: test放入Rose的tt>style.css開端。現(xiàn)在"test" 是"Rose"的母主題,只包含有一個style.css文件和一個相關的圖像,都在wp-content/themes/Rose目錄中。(注:規(guī)定一個母主題會從主題&mdash中繼承所有的主題文件;意思是子主題目錄中的任何模板文件都會被忽視。)
style.css中的評論標題行要求WordPress能夠辨別一個主題并且將它顯示在設計 > 主題下的管理面板上作為一個擁有其它安裝主題的可供選擇的主題選項。
注 : 當在評論標題的Template:部分定義一個母主題的時候,你必須使用那個樣式的目錄名。例如,將默認的WordPress主題用作母主題,不要寫成模板: WordPress 默認,要寫成模板: 默認,因為默認是這個主題的目錄。
函數(shù) 文件[ ]
一個主題可以有選擇的使用一個函數(shù)文件,這個文件在主題子目錄中,并且命名為functions.php。文件基本像一個插件那樣運行,而且如果它呈現(xiàn)在你使用的主題中,會在WordPress初始化(管理網(wǎng)頁和外部網(wǎng)頁)的時候,自動載入。建議使用這個文件:
- 定義你的主題多個文件中使用的函數(shù)
- 設置一個管理界面,提供給用戶顏色,樣式,和你的主題的其它方面的選項
"默認"WordPress主題包含一個functions.php文件,這個文件定義了函數(shù)和一個管理界面,這樣你可能想將它用作一個模型。因為functions.php基本起一個插件的作用,函數(shù)_參考列出了擁有關于你怎樣處理這個文件的更多信息的最后位置。
主題模板文件[ ]
模板是PHP原始文件,根據(jù)訪客要求,用來產(chǎn)生網(wǎng)頁的。讓我們來看看可以被定義為主題的一部分的不同的模板。
WordPress能夠使你為你的博客的不同部分分別定義模板;然而,使你的博客正常地運行,并不一定需要所有的這些不同的模板文件。模板是根據(jù)模板層級選擇和產(chǎn)生的,取決于一個特別的主題中有什么樣的模板。作為一個主題開發(fā)者,你可以選擇你想執(zhí)行使用多少的模板自定義。例如,作為一個極端的例子,你可以為網(wǎng)絡博客上產(chǎn)生的和顯示的所有的網(wǎng)頁,只使用一個模板文件,稱為index.php作為模板。一個更加通常的用法是使用不同的模板文件產(chǎn)生不同的結果,允許最大化的自定義。
基本的模板[ ]
在最小化值的時候,一個WordPress主題包含有兩個文件:
- style.css
- index.php
這兩個文件都歸屬于主題的目錄。index.php 模板文件非常地靈活。它可以被用來包括關于標題,工具條,頁腳,內(nèi)容,類別,歸檔,搜索,錯誤和你的站點上的用戶創(chuàng)建的其它的網(wǎng)頁的所有參數(shù)?;蛘咚梢员?i>再次地分到模塊模板文件,每個部分都具有一部分的工作量。
如果你沒有提供其它任何的模板文件,WordPress會使用內(nèi)置的默認文件。例如,如果你既沒有一個comments.php也沒有一個comments-popup.php模板文件,WordPress就會自動地使用wp-comments.php 和wp-comments-popup.php模板文件,使用模板層級。這些默認模板可能不太匹配你的主題,因此你可能需要提供你自己的模板。一般基本的文件用來再次地切分(屬于主題的目錄)是:
- header.php
- sidebar.php
- footer.php
- comments.php
- comments-popup.php
使用這些模塊的模板文件,你可以將這些模板標簽放到index.php上級文件中來包括或者得到這些units,你想讓它們出現(xiàn)在最后產(chǎn)生的網(wǎng)頁的位置。
- 包含標題,使用get_header()模板標簽。
- 要包含工具條,使用get_sidebar() 模板標簽。
- 要包含頁腳,使用get_footer()模板標簽。
下面是關于包含 用法的一個例子:
<?php get_sidebar(); ?> <?php get_footer(); ?>
關于這些不同模板運行以及怎樣在模板里面產(chǎn)生不同信息的更多內(nèi)容,請閱讀模板文件。
以詢問為基礎的模板[ ]
WordPress可以為不同的詢問 形式載入不同的模板。有兩種方法可以做到這一點:作為內(nèi)置的模板層級的一部分,通過在模板文件中的Loop使用引起條件反應的標簽。 要使用模板層級,你只要提供特別目的的模板文件,這個會自動地用來覆蓋index.php。例如,如果你的主題提供一個模板叫做category.php,并且提供一個正被查詢的類別,category.php而不是index.php將會被載入。如果category.php沒有出現(xiàn),index.php會照常使用。
通過提供一個例如,稱作category-6.php的文件,你可以在模板層級中得到更加詳細的信息---當為一個ID號碼為6的類別產(chǎn)出網(wǎng)頁的時候,這個文件而不是category.php會被用到。(如果你以一個站點管理者的身份連接主機,你可以在管理 > 類別中找到類別的ID數(shù)字)。更詳細地看看這個過程是怎樣進行的,請看看類別模板。
如果你的主題需要更多地控制使用的模板文件而不是模板層級中所提供的內(nèi)容,你可以使用引起條件反應的標簽。引起條件反應的標簽基本上是用來檢查看看在WordPress Loop內(nèi)的,一些特別的條件是否是真的,然后你就可以根據(jù)那個情況,載入一個特別的模板,或者在屏面上放一些特別的文本。
例如,給一個特別類別中的文章產(chǎn)出一個樣式表,代碼可能看起來像這樣的:
<?php if (is_category(9)) { //查找類別9中的文章 include(TEMPLATEPATH . '/single2.php'); } else { // 每隔一篇文章便放入一個這個 include(TEMPLATEPATH . '/single1.php'); } ?>
或者,使用一個查詢,這個查詢可能看起來像:
<?php $post = $wp_query->post; if ( in_category('9') ) { include(TEMPLATEPATH . '/single2.php'); } else { include(TEMPLATEPATH . '/single1.php'); } ?>
在任一的情況下,這個例子代碼會產(chǎn)生不同的模板,這些模板的使用取決于類別上顯示的文章。詢問條件并不局限于類別,然而—請看看引起條件反應的標簽文章來看看所有的選項。
媒體圖標[ ]
這個特色是 當前在 WordPress 2.5中破壞了。
WordPress使用媒體icons來代表你的博客和管理界面上的附屬文件,前提是這些icons存在。
它要查找當前主題的images目錄中的媒體類型所命名的圖像文件。(對于Wordpress2.2而言,默認的主題只有一個媒體圖標,audio.jpg.) 例如,對于MIME 類型 audio/mpeg的一個附屬裝置,WordPress在這些位置中尋找一個圖標文件,在找到第一個匹配文件后,便停止(請看看wp_mime_type_icon):
- 我的_主題/圖像/audio.jpg
- 我的_主題/圖像/audio.gif
- 我的_主題/圖像/audio.png
- 我的_主題/圖像/mpeg.jpg
- 我的_主題/圖像/mpeg.gif
- 我的_主題/圖像/mpeg.png
- 我的_主題/圖像/audio_mpeg.jpg
- 我的_主題/圖像/audio_mpeg.gif
- 我的_主題/圖像/audio_mpeg.png
主題模板文件列表[ ]
下面是WordPress 識別的主題模板文件的列表。當然,你的主題可以包含任何其它的樣式表,圖像,或者文件。只要牢記下面的內(nèi)容對于WordPress具有一些特別的意思—更多的信息請看看模板層級。
- style.css
- 主要的樣式表。這個必須包含在你的主題中,而且它必須為你的主題包含信息標題。
- index.php
- 主要的模板。如果你的主題提供它自己的模板,index.php必須呈現(xiàn)。
- comments.php
- 評論模板。如果沒有出現(xiàn),來自"默認"主題的comments.php正被使用。
- comments-popup.php
- 彈出的評論模板。如果沒有出現(xiàn),來自"默認"主題的comments-popup.php正被使用。
- home.php
- 主頁是模板。
- single.php
- 單一的文章模板。當一篇單一的文章被查詢的時候,便會用到這個模板。對于這個和其它的查詢模板,如果查詢模板沒有出現(xiàn),就會用到index.php。
- page.php
- 網(wǎng)頁模板。當一個單獨的網(wǎng)頁得到查詢的時候,便會用到這個。
- category.php
- The 類別模板。當一個類別得到詢問的時候,便會用到這個。
- author.php
- 作者模板。查詢一個作者的時候,會使用到這個。
- date.php
- 日期/時間模板。當查詢一個日期或者時間的時候,便會用到這個模板。年,月,日,時,分,秒。
- archive.php
- 歸檔模板。當查詢一個類別,作者或者日期的時候,便會用到這個模板。注意這個模板會被category.php, author.php, 和date.php覆蓋,因為后者有各自的查詢形式。
- search.php
- 搜索結果模板。當執(zhí)行一個搜索的時候,便會用到這個模板。
- 404.php
- 404 沒有找到模板。當WordPress找不到匹配查詢的一篇文章或者網(wǎng)頁的時候,便會用到這個模板。
這些文件有關于WordPress的特別意思因為這些文件用來作index.php替代品,條件是這些文件存在,根據(jù)模板層級,而且相應的引起條件反應的標簽 (a.k.a is_*(); 函數(shù)) 返回是真。
來自一個模板的參考文件[ ]
WordPress默認主題(以Michael Heilemann的KubrickWordPress1.2布局為基礎)提供了一個非常好的例子,關于查詢是怎樣映射進模板的。
代碼<?php bloginfo('template_directory'); ?>將模板目錄的URL嵌入了模板產(chǎn)出中。你可以將任何額外的URI信息添加到你的主題的參考文件的這個輸出中。
代碼<?php bloginfo('stylesheet_directory'); ?>嵌入了目錄的URI,這個URI將當前的主題樣式表包含到模板輸出中。你可以添加任何額外的URI到你的主題的參考文件的輸出中,特別是樣式表使用的那些。
恒量TEMPLATEPATH是當前主題模板目錄絕對路徑的一個參考(后面沒有/)。
注意用在樣式表中的URIs與樣式表相關,但是與指代樣式表的網(wǎng)頁并不相關。這就避免了在CSS文件中包含PHP代碼來規(guī)定類別。例如,如果你的主題包含了一個images/目錄,你只需要在CSS中規(guī)定這個相關的目錄,像這樣的:
h1 { 背景圖像: URL(圖像/my_background.jpg); }
對于模板中的參考文件以以上的方式使用URIs是一個好的做法,因為,這樣你的模板就不會取決于絕對路徑了。
定義自定義模板[ ]
使用WordPress插件系統(tǒng)來定義額外的模板,這種模板以你自己自定義的標準為基礎,是可能的。這個高級的功能通過使用template_redirect action hook可以得到實現(xiàn)。更多的關于創(chuàng)建插件的信息可以在插件API參考中找到。
插件API Hooks[ ]
當開發(fā)一個主題的時候,最好牢記你的主題應該得到了設置,這樣它就能夠很好地配合你(或者其它的主題用戶)可能決定安裝的WordPress插件。插件通過"Action Hooks"來給WordPress添加泛函性(請看看插件API得到更多的信息)。大多數(shù)Action Hooks是在WordPress核心PHP代碼內(nèi)部,因此你的主題不要為它們的運行準備任何特別標簽。但是有幾個Action Hooks的確需要呈現(xiàn)在你的主題上,為了使插件能夠直接地在你的頁眉,頁腳,工具條,或者在網(wǎng)頁上顯示信息。下面是你需要的特別Action Hook模板標簽列表:
- wp_head
- Goes in the HTML <head> 主題元素; header.php 模板. 例子插件使用: 添加 javascript 代碼。
- 用法: <?php do_action('wp_head'); ?>
- -or- <?php wp_head(); ?>
- wp_footer
- 在一個主題的"頁腳"中; footer.php 模板。例子插件使用: 在頁腳的底部,嵌入需要在所有內(nèi)容運行之后運行的PHP代碼。
- 用法: <?php do_action('wp_footer'); ?>
- -or- <?php wp_footer(); ?>
- wp_meta
- 通常在主題的菜單或者工具條的<li>Meta</li>部分; sidebar.php 模板。 例子插件使用: 包括一個旋轉的廣告或者一個標簽cloud。
- 用法: <?php do_action('wp_meta'); ?>
- -or- <?php wp_meta(); ?>
- 評論_形式
- 在 comments.php 和comments-popup.php中, 直接在評論形式的關閉標簽 (
</form>
)前面。 例子插件使用: 顯示一個評論預覽。
- 用法: <?php do_action('comment_form', $post->ID); ?>
對于一個真正的世界用法的例子,你將會發(fā)現(xiàn)這些插件hooks包含在默認主題的模板中。
主題開發(fā)一般指導方針[ ]
請明白你的文件中的以下內(nèi)容(一個包含在你的主題中的README文件幫助許多用戶克服了許多潛在的障礙物):
- 明確地指出你的主題和模板文件要獲得什么。
- 如果你的主題有什么缺陷的話,將它指出來。
- 明確地指出模板和樣式表文件中評論任何特別的修改。給更改,模板部分,CSS樣式,特別是給那些包含模板文件的添加評論。
- 如果你有什么特別的要求,這些要求可能包括自定義RewriteRules,或者使用一些額外的,特別的模板,圖像或者文件,請清楚地描述一個用戶應該采取那些措施,以使你的主題運行。
- 試著并且測試你的主題通過瀏覽器至少發(fā)現(xiàn)幾個問題,主題的用戶不久可能會發(fā)現(xiàn)這些問題。
- 如果可能的話,提供聯(lián)系信息(網(wǎng)頁或者電子郵件),來支持信息和問題。
花一些時間來通讀為了公共發(fā)行而設計主題,這篇文章有許多好的貼士,關于怎樣準備你的主題來公共發(fā)行。
參考和資源[ ]
在模板文章中有WordPress主題和模板文件資源。