主題框架可以說是無比強大的!對於非技術型的WordPress 用戶來說,主題框架使得建立一個獨一無二並看起來像是運行一個量身定制的主題的網站成為可能,並且對於WordPress 開發者來說,它們能夠幫助你在運用DRY(切勿複製自己)原則的同時,快速建立起一個自訂網站。
如果你使用了一段時間的第三方框架之後,發現其代碼臃腫並缺乏靈活性,並對此感到十分沮喪的話,又或者你僅僅是想能完全掌控你自己的代碼,那麼建立一個你自己的主題框架無疑就是最好的選擇了!
在本系列教學中,你將學習如何去創建你自己的 WordPress 主題框架,從而為你自己或你的客戶建立一個網站,然後發布分享給其他用戶。你將會經過以下幾個階段的學習,包括建立具備框架基礎的父主題、增加額外的功能、鉤子(也可以叫「掛鉤」)等等。同時,你也會學習如何在你的子主題和外掛中使用這些技巧,並且知道如何向公眾公開分享你的程式碼等等。
但是在開始之前,你需要知道主題框架是如何運作的,並且到底是什麼使得它們不同於一個標準父主題。
我花了一些時間開發了兩個主題框架,分別應用於兩種類型的客戶網站,隨著時間的推移我不斷地加強和改進它們的一些應用。我也曾與第三方合作開發一些主題框架。以我的經驗來看,一個主題框架應該有以下幾個主要特點:
- 通常它主要由一個父主題組成,這個父主題會被設計成能與子主題聯合使用。在某些情況下,父主題也會單獨使用,但是在其他一些情況下,父主題非得和子主題連在一起才能使用——WordPress 法典將其分別定義為“基礎/入門主題”和“代碼庫” 。
- 通常它包括一些可以被子主題和插件利用的鉤子和函數。你的主題框架是整個生態系統的基礎,它還包括部分與框架鉤連的插件。
- 如果是給由不會編程的使用者使用,它會包括主題選項頁面,這樣可以讓使用者根據自己的需求來自訂主題。設計、佈局、功能和內容等等都可以是多樣且混合的。在某些情況下,一些功能可以經由主題定制器來提供。
- 它可能包括多個小工具區域,因而非技術用戶可以透過 WordPress 小工具(包括你專門為框架編寫的透過外掛程式添加的小工具)添加內容或程式碼。
- 它可能還包括腳本庫功能,例如 jQuery 滑桿或燈箱特效。根據你和使用者的需要,你可能需要在主題框架中將這些合併到一起,或提供一些與框架連結的插件。
- 通常它是可擴展的,並能用鉤子讓你透過子主題和相關插件擴展其功能。
上述第一點和第二點是最根本的-如果沒有一個父主題,你就不會有一個主題框架。而一個不具備那些鉤子和函數的父主題僅僅只能算是一個基本父主題,不能說是一個真正的主題框架。
以上所述就是關於主題框架的部分了,但它們究竟是如何運作的呢?讓我們先來看看一個主題框架的要素:
- 父主題和可供選擇的子主題
- 動作和過濾掛鉤
- 函數 父主題和可供選擇的子主題
- 小工具 函數
- 腳本 主題選項
- 小工具
- 作為初始主題,可以自行透過主題選項介面或主題自訂器來自訂。這方面的例子包括 Atahualpa 和 Thematic。這兩個可以作為不使用子主題的獨立主題的典範。
- 由於網站的一個基礎需要透過一個子主題來添加,所以如果沒有這個子主題的話,主題框架將不能有效地運用於網站。這樣的例子有Hybrid Core 和 Genesis。這些將包括一些基本的程式碼,你通常會在一個有著一系列鉤子和函數的主題中找到,這些鉤子和函數可以透過子主題加以利用,當然也可以透過相關外掛程式。所有這些便構成了適用於主題框架的API(應用程式介面)。
暫時我不會在這裡解釋父主題和子主題的概念,因為在「子主題教學」中會有相關的介紹。雖然許多主題框架配備了一系列支持自身的子主題,但是如果你想要有其他更適合自己的子主題就只有自己動手開發了。
如果你正在開發自己的主體框架,我建議你創建至少一個「初始」子主題,以避免重複參與制定每個專案的工作:你可能會針對不同類型的專案決定去創建多個子主題作為其基礎,例如一些子主題部落格和非部落格網站。
動作掛鉤和過濾掛鉤
當添加自定義代碼或更改主題的行為方式時,一個主題框架會包括一系列與子主題和插件相聯繫的掛鉤:
- 行動掛鉤(Action hooks)會出現在程式碼中的多個地方,使你能夠透過主題框架中編寫的函數將相關程式碼新增到你的模板檔案中,而這個主體框架可以透過子主題來覆蓋。我自己的主題框架大量地運用了動作掛鉤,這些掛鉤在所有的模板文件中都有提供,從而讓用戶可以在諸如小工具區域、聯繫方式等內容上自由發揮,並根據需要隨時隨地調用行動按鈕和站點特定代碼。
- 過濾掛鉤(Filter hooks)可以用來改變使用子主題或特定外掛行為的方式,例如自訂循環、修改靜態內容等等。任何靜態文字(或從你的網站外部調用的程式碼)應該包裹在一個過濾器內,以便它可以根據子主題的需要而變化。
在早期階段花一些時間來考慮你想要包含什麼掛鉤是非常值得的,因為這樣你就知道什麼內容需要通過一個鉤子來包含進去,什麼可以直接編寫到你的模板文件之中。你會在接下來的教學中了解到這些。
函數
你的主題框架也可能包括一系列的函數。其中的一些會與你已經定義過的動作掛鉤和過濾掛鉤相連,而其他的一些則是例如模板標籤之類的函數,並且子主題可以使用這些函數。
如果你曾在一些客戶網站上使用過任何自訂函數,那麼你也可以將它們添加到你的主題框架之中。另外,你不必啟動所有的函數:你只需要在你的子網站使用 add_action() 函數啟動跟父主題相關的函數就行。
主題選項
主題選項介面對任何複雜的主題來說都是很有用的,對於非技術用戶來說,更是如此。一些主要的主題框架都會在自己的管理區域內包含多個主題選項介面,其選項包括開關功能、修改佈局、添加內容和改變設計元素,如顏色、背景圖片、字體和標題圖像等等。
您可以選擇使用主題定制器來完成您的許多選項,其優點是可以讓你的用戶在定制主題的同時能直接地看到它們的變化。對於Edupress主題框架,我便採取了這種做法,其中的學校網站是我和馬克·威爾金森一起開發的。
小工具區域
你是否需要選擇添加一系列小工具區域將取決於你的主題框架的受眾:如果僅僅是你自己或者是一個小團隊的開發人員來使用的話,你也許並不需要在標準側邊欄和頁腳上面添加任何小工具區域。
但是,如果你的主題框架面對的是非技術用戶的話,你可以透過在主題框架的各個地方註冊多個小工具區域從而給予其更多的靈活性。你也可以在網站頭、標準側邊欄和頁腳中,在內容之前和/或之後,以及在頁腳下方註冊小工具區域。
我的客戶網站所使用的主題框架在頁腳中包含四個小工具區域:主題會檢查哪些被填充了並據此添加CSS類,因此被填充的小工具區域將會各自佔據頁面適當的寬度。
你的小工具區域可能會被直接編寫到你的模板文件中,或者你可能會決定(就像我一樣)通過動作掛鉤將其添加到您網站的相關位置。這意味著它們可以在子主題中被覆蓋,無論是可供選擇性的小工具區域還是自訂程式碼。
腳本
如果一個給定的腳本很可能被一些建立在你自己主題框架之上的網站所使用,或者如果你的用戶是非技術型的,你又想要提供更多的選項,那麼你可以在你的框架中包含一些特定的腳本,如一個滑桿或燈箱特效腳本。這可以讓使用者無需去安裝額外的插件,但如果實際上這些腳本並非必要,那麼這些程式碼就會顯得臃腫,這也是它的不足之處。
同樣的,這將取決於你的受眾和預期的需求:如果它只是你用來工作的框架,我建議使用這些腳本開發(或標識)這些插件,什麼時候需要便可以拿來使用。
如果你真的包含了這些腳本,那麼就等於是包含了在主題選項介面上的啟用和停用選項。
可擴展性
如果目前你的框架對某一系列網站非常有用,那麼在將來你也許希望它具有可擴展性。構成框架核心的父主題相當於是這個生態系統的心臟,你和你的主題使用者將會為自己的網站進一步完善開發並添加更多的選項和功能。這將包括:
- 子主題或初始主題——這些名單很可能隨著時間的推移而有所變化,特別是如果你向公眾發布了你的主題。
- 專為你的框架設計的插件往往要透過框架特定的掛鉤來啟動。
它還可能包括一些對於其他想要使用你的框架的開發人員有用的文檔:最重要的主題框架配備了大量的文檔,開發人員可以用來自定義他們在框架上建立的網站或者為其他用戶創建一些子主題或外掛程式。
小結
主題框架是 WordPress 開發者武器庫中一個十分強大的工具。正如我們所看到的,它不僅對成千上萬使用其來創建自訂WordPress 網站的所有者(非技術型)來說至關重要,對任何其他的開發者來說,也是一個不可多得的工具,無論這些開發者是想為自己還是為其客戶創建多種多樣的網站。
主題框架通常有一些這樣的特徵:可擴展性和靈活性,而且讓你或你的用戶能夠輕鬆地通過使用子主題,以及訪問相關函數和你的框架所提供的鉤子來自訂網站。
我們已經知道了主體框架是如何運作的,在這個系列接下來的課程中,你會了解你的框架需要做什麼,它需要為誰工作等問題,而這將幫助你決定你的主題框架最適合的發展途徑。
版權聲明:轉載請註明來源網址
以上就介紹了WordPress 主題框架是如何運作的,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中