themisos:一種現(xiàn)代的WordPress開發(fā)方法
>我對WordPress糾結(jié)的代碼庫的鄙視是眾所周知的。我建議不要使用它,除非您在技術(shù)上熟練。但是,我的批評源于人們對改進(jìn)的渴望,希望將出現(xiàn)出色的替代方案,并提供更合乎邏輯,更有效的發(fā)展過程。 在我看來,任何簡化WordPress的嘗試都是積極的一步。
>最近,一個(gè)名為Themosis的項(xiàng)目浮出水面,被稱為“ WordPress開發(fā)人員的框架”。本文探討了它的病,其用法,并檢查了其示例項(xiàng)目 - 書店應(yīng)用程序。
鍵突出顯示:
- 與傳統(tǒng)框架不同,它是與WordPress集成以增強(qiáng)發(fā)展的API。它使開發(fā)人員能夠使用現(xiàn)代PHP功能(名稱空間,類,匿名功能)和作曲家構(gòu)建WordPress組件。
- > > themiss的安裝依賴于作曲家和WordPress命令行工具。 作曲家創(chuàng)建了一個(gè)Interisos項(xiàng)目,自動合并了最新的WordPress版本。 標(biāo)準(zhǔn)的WordPress安裝腳本完成了設(shè)置。
- > themis病仍處于早期階段(待定版1.0版)。盡管年輕,但即使在WordPress核心的限制內(nèi),它也表現(xiàn)出了在PHP生態(tài)系統(tǒng)中促進(jìn)更好的設(shè)計(jì)實(shí)踐的前景。
- 。
- 理解themisosion
>“框架”一詞可能會誤導(dǎo)PHP開發(fā)人員。 WordPress已經(jīng)包含許多不必要的組件??蚣芡ǔW袷睾喖s的原則和脫鉤的組件,并構(gòu)建了復(fù)雜的應(yīng)用程序,而不是相反。
從傳統(tǒng)意義上講,
>
從本質(zhì)上講,Themosis是一種由MVC驅(qū)動的,啟發(fā)的WordPress插件,用于構(gòu)建其他插件。它包括其自己的路由器(Laravel風(fēng)格的路線定義)和模板引擎(SCOUT),類似于Laravel和Phalcon,并增加了WordPress支持。 例如,模板循環(huán):
>利用WordPress API進(jìn)行數(shù)據(jù)檢索,并且
類是專門為WordPress內(nèi)容循環(huán)設(shè)計(jì)的。@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
安裝Loop
> themissis安裝涉及作曲家和WordPress命令行工具。 用作曲家自動創(chuàng)建一個(gè)Themosis項(xiàng)目,包括最新的WordPress版本;標(biāo)準(zhǔn)WordPress安裝腳本最終確定了設(shè)置。 請參閱官方安裝說明,或者首先對示例項(xiàng)目進(jìn)行實(shí)驗(yàn)(下面詳細(xì)介紹)。
>>示例項(xiàng)目:書店應(yīng)用
>Themosis提供了一個(gè)書店應(yīng)用程序示例。
測試書店應(yīng)用
進(jìn)行測試,您可以改進(jìn)宅基地。注冊一個(gè)新網(wǎng)站:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
請記住將bookstore.local
添加到主機(jī)的/etc/hosts
文件中(按照宅基地改進(jìn)的說明)。
),然后訪問git clone http://ipnx.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
>的安裝過程。 按照說明進(jìn)行操作。 此設(shè)置允許實(shí)驗(yàn)沒有風(fēng)險(xiǎn) - 簡單地重建VM以恢復(fù)任何更改。
http://bookstore.local:8000
雖然初始外觀不是開創(chuàng)性的(任何WordPress網(wǎng)站都可以采用類似的配置),但兩個(gè)關(guān)鍵觀察值脫穎而出:
設(shè)置非??焖?,直接。
- 的性能非???,考慮到themisos的額外層訪問WordPress API。
- 代碼考試
書店的代碼位于github上:
(themosis源代碼 - 與其他框架相關(guān))和(作曲家依賴關(guān)系)。
>代碼包含現(xiàn)代實(shí)踐(名稱空間,類,綜合文檔)時(shí),仍然存在較小的過時(shí)元素(例如,app
,關(guān)閉PHP標(biāo)簽)。
src
> Themosis代碼分布在兩個(gè)位置:路由和演示文稿位于主題中,而應(yīng)用程序邏輯則位于插件文件夾中。vendor
<?php defined('DS') or die('No direct script access.');
MVC結(jié)構(gòu)
盡管可以改進(jìn)兩個(gè)父文件夾的碎片,但MVC結(jié)構(gòu)的定義很好。
文件夾(類似于Laravel)使用可比的語法。控制器與視圖分開,并且控制器使用模型,將數(shù)據(jù)傳遞給視圖。 routes
>的示例:home.controller.php
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop>視圖使用dot符號進(jìn)行遍歷(例如,
映射到pages.home
>)。app/views/pages/home.scout.php
>
參數(shù)路由
路由很簡單。 例如,搜索頁面直接使用WordPress的搜索功能:
- map: bookstore.local to: /home/vagrant/Code/themosis_example這種方法抽象WordPress固有缺陷的搜索功能,促進(jìn)更容易的替換。
創(chuàng)建一個(gè)自定義頁面
>讓我們使用控制器和視圖創(chuàng)建一個(gè)自定義頁面。
- 添加一條路由到
- :
routes.php
return View::make('pages.home')->with(array( 'promo' => Books::getPromoBook($this->page), 'books' => Books::getPopularBooks($this->bookId), 'news' => News::get(), 'newspage' => get_page_by_path('news') ));
- 創(chuàng)建
- :
pages/test.scout.php
// Search page Route::is('search', function(){ return View::make('search', array('search' => $_GET['s'])); });
- 添加一個(gè)控制器(
- ):
controllers/Test_Controller.php
Route::only('page', 'test', 'test@index');
/test
>
要包括頁面內(nèi)容,我們需要訪問全局
變量并將其傳遞給視圖。 這突出了WordPress的全局變量依賴。
$post
@include('header') Hello World @include('footer')>正確地渲染頁面。
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
>有些復(fù)雜,但呈現(xiàn)WordPress內(nèi)容的強(qiáng)大包裝器提供了結(jié)構(gòu)和清晰度,改善了WordPress的剛性。
> Themosis為WordPress插件開發(fā)提供了類似Laravel的體驗(yàn)。 它將急需的結(jié)構(gòu)和封裝引入WordPress的插件體系結(jié)構(gòu)。> >盡管仍處于早期階段(0.8版),但它是一個(gè)有前途的項(xiàng)目。 采用良好的設(shè)計(jì)實(shí)踐對PHP社區(qū)至關(guān)重要,即使在WordPress的核心局限性范圍內(nèi),Themisos也提供了有價(jià)值的貢獻(xiàn)。
> (由于長度約束而省略了常見問題部分,但可以輕松解釋并與其他文本相似。)以上是首先查看Themosis,這是WordPress開發(fā)人員的框架的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫查詢效率低、主題代碼質(zhì)量差或流量激增。1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況并刪除或替換低效插件;3.安裝緩存插件、清理冗余數(shù)據(jù)、分析慢查詢?nèi)罩疽詢?yōu)化數(shù)據(jù)庫;4.檢查主題是否存在過度加載內(nèi)容、復(fù)雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測試對比并優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位并解

MinifyingJavaScript文件可通過刪除空白、注釋和無用代碼來提升WordPress網(wǎng)站加載速度。1.使用支持合并壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用并選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動壓縮JS文件并通過FTP上傳,適用于熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能沖突,啟用后需徹底測試網(wǎng)站功能。

優(yōu)化WordPress站點(diǎn)不依賴插件的方法包括:1.使用輕量級主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動壓縮和合并CSS、JS文件,減少HTTP請求;3.上傳前優(yōu)化圖片,使用WebP格式并控制文件大??;4.配置.htaccess啟用瀏覽器緩存,并接入CDN提升靜態(tài)資源加載速度;5.限制文章修訂版本并定期清理數(shù)據(jù)庫冗余數(shù)據(jù)。

TransientsAPI是WordPress中用于臨時(shí)存儲可自動過期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設(shè)置生存時(shí)間(TTL),適合緩存API請求結(jié)果、復(fù)雜計(jì)算數(shù)據(jù)等場景。使用時(shí)需注意key命名唯一性與命名空間、緩存“懶刪除”機(jī)制及對象緩存環(huán)境下可能不持久的問題。典型應(yīng)用場景包括減少外部請求頻率、控制代碼執(zhí)行節(jié)奏和提升頁面加載性能。

PluginCheck是一個(gè)幫助WordPress用戶快速檢查插件兼容性和性能的工具,主要用來識別當(dāng)前安裝的插件是否存在與最新版本W(wǎng)ordPress不兼容、存在安全漏洞等問題。1.如何開始檢查?安裝激活后,在后臺點(diǎn)擊“RunaScan”按鈕即可自動掃描所有插件;2.報(bào)告包含插件名稱、檢測類型、問題描述及解決方案建議,便于優(yōu)先處理嚴(yán)重問題;3.建議在更新WordPress前、網(wǎng)站異常時(shí)或定期運(yùn)行檢查,提前發(fā)現(xiàn)隱患,避免未來出現(xiàn)重大問題。

防止評論垃圾信息最有效的方式是通過程序化手段自動識別并攔截。1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動填寫特性識別垃圾評論,不影響用戶體驗(yàn);3.檢查評論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評論頻率與來源IP,限制單位時(shí)間內(nèi)的提交次數(shù)并建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style注冊資源,并設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,并確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

要添加自定義用戶字段需根據(jù)平臺選擇擴(kuò)展方式并注意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫額外表或鍵值對結(jié)構(gòu)存儲信息;2.在前端加入輸入框并與后端集成;3.對敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動端適配和用戶體驗(yàn)。
