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