鑰匙要點(diǎn)
- > WordPress MVC是一個插件,將模型視圖 - 控制器(MVC)架構(gòu)引入WordPress,使開發(fā)人員能夠在插件開發(fā)中分離邏輯和演示。
- > 要使用WordPress MVC,您必須安裝和激活WP MVC插件,然后允許您使用命令行中的特定MVC命令進(jìn)行腳克式新插件。
- > >教程演示了構(gòu)建一個名為“ Animelist”的示例插件,其中包括創(chuàng)建自定義數(shù)據(jù)庫表,用于添加和編輯條目的表單以及在Admin和公共側(cè)面管理數(shù)據(jù)顯示。 通過將代碼構(gòu)造到模型(數(shù)據(jù)處理),視圖(輸出表示)和控制器(請求處理)中,
- WordPress MVC可以增強(qiáng)代碼組織和可維護(hù)性,這對于復(fù)雜或大規(guī)模的WordPress項(xiàng)目特別有用。 該教程涵蓋了從WordPress中設(shè)置MVC環(huán)境,為插件生成必要的MVC組件,以添加自定義樣式和腳本,在WordPress插件開發(fā)中展示MVC的實(shí)際實(shí)現(xiàn)。 >>>>>>
- 什么是mvc?
- 在我們繼續(xù)前進(jìn)之前,重要的是我們都在同一頁面上。如果您已經(jīng)知道什么是MVC,請隨時跳到下一節(jié)。 >
>安裝和設(shè)置
WP MVC是一個插件,我們需要安裝它,以使MVC與WordPress一起使用。您可以在此處下載插件并像通常在WordPress中安裝插件一樣安裝它。完成此操作后,登錄WordPress并從您的插件頁面激活它。
>構(gòu)建插件MVC方式
>在我們繼續(xù)前進(jìn)之前,我將簡要介紹一下我們在本教程中將要構(gòu)建的內(nèi)容。我們將構(gòu)建一個插件,該插件將列出網(wǎng)站管理員端創(chuàng)建的所有動漫。幾乎就像這個網(wǎng)站所做的那樣。在管理方面,我們將擁有一個接口,可以在其中添加,列表,編輯或刪除動漫顯示。在公共方面,我們將在特定頁面中的網(wǎng)格視圖中介紹它們。
>
然后,將執(zhí)行權(quán)限添加到WPMVC文件中。這是我們將用于生成新插件的文件。cd path/to/plugins/wp-mvc>
接下來,我們現(xiàn)在可以生成一個新的插件。執(zhí)行以下命令來執(zhí)行此操作。
chmod +x wpmvc
這將在WordPress安裝的WP-CONTENT/插件目錄下創(chuàng)建一個新的插件。對我來說,它創(chuàng)建了一個動漫列表目錄。打開該目錄,然后打開anime_list_loader.php文件。該文件包含在激活或停用插件后將執(zhí)行的函數(shù)。由于我們需要節(jié)省大量自定義數(shù)據(jù),因此我們必須創(chuàng)建一個自定義表,而不是使用選項(xiàng)API將內(nèi)容存儲在數(shù)據(jù)庫中。為此,我們必須添加將在插件激活時創(chuàng)建新表的代碼。在激活方法中添加以下代碼。
./wpmvc generate plugin AnimeList
在上面的代碼中,我們正在創(chuàng)建一個具有ID,標(biāo)題,海報,情節(jié)和流派字段的表,使用RAW SQL查詢。然后使用DBDELTA函數(shù)執(zhí)行SQL查詢。 接下來,在停用方法下,我們必須清理混亂。下面的代碼從WordPress數(shù)據(jù)庫中刪除了表。
global $wpdb; $sql = ' CREATE TABLE '. $wpdb->prefix . 'animelists ( id int(11) NOT NULL auto_increment, title varchar(255) NOT NULL, poster varchar(255) NOT NULL, plot TEXT NOT NULL, genres TEXT default NULL, PRIMARY KEY (id) )'; dbDelta($sql);
通常,這不是您想要的方式。一些用戶可能仍然需要您的插件隨著時間的推移獲得的數(shù)據(jù)。即使它們停用您的插件。但是要使事情變得簡單,我們不會在這里處理。
>現(xiàn)在是從WordPress管理頁面激活新插件的好時機(jī)。如果一切正常工作,那應(yīng)該在WordPress數(shù)據(jù)庫中創(chuàng)建WP_ANIME_LISTS表。
>require_once ABSPATH.'wp-admin/includes/upgrade.php'; global $wpdb; $sql = 'DROP TABLE ' . $wpdb->prefix . 'anime_lists'; $wpdb->query($sql);接下來,執(zhí)行以下命令:
>上面的命令生成了您指定的模型的視圖,控制器和模型。第一個動畫主義者是插件的名稱,第二個是模型的名稱。請注意,WPMVC在此處使用命名約定。模型應(yīng)始終以奇異形式,桌子是復(fù)數(shù)形式。并且每個以模型名義的大寫字母意味著應(yīng)與下劃線分開。模型的名稱應(yīng)基于表的名稱。因此,使用上面的規(guī)則,如果表的名稱是Anime_Lists,則該模型應(yīng)名為Animelist。下劃線變成駱駝飾,并將復(fù)數(shù)轉(zhuǎn)化為單數(shù)形式。
下一步,在應(yīng)用程序/views/admin/anime_lists/下打開add.php文件和edit.php,并添加以下代碼:
>cd path/to/plugins/wp-mvc
>在edit.php文件上:
chmod +x wpmvc我們上述所做的是創(chuàng)建用于添加新動漫節(jié)目和編輯現(xiàn)有的表格。這利用了WPMVC內(nèi)置的形式助手。要分解它,首先我們創(chuàng)建一個新的形式,然后提供模型的名稱作為其參數(shù)。在這種情況下,該模型的名稱是Animelist。
接下來,我們使用輸入方法在表中添加的每一列輸出每個列。該方法將字段的名稱作為其第一個參數(shù)。默認(rèn)情況下,WPMVC通過檢查數(shù)據(jù)類型確定將輸出的字段類型。因此,如果數(shù)據(jù)類型為VARCHAR,它將輸出文本輸入。如果數(shù)據(jù)類型是文本,它將輸出文本方面等等。
>./wpmvc generate plugin AnimeList
如果要使用另一種輸入類型,則可以指定一個包含輸入類型的數(shù)組作為第二個參數(shù):
global $wpdb; $sql = ' CREATE TABLE '. $wpdb->prefix . 'animelists ( id int(11) NOT NULL auto_increment, title varchar(255) NOT NULL, poster varchar(255) NOT NULL, plot TEXT NOT NULL, genres TEXT default NULL, PRIMARY KEY (id) )'; dbDelta($sql);>最后,我們使用結(jié)束方法關(guān)閉表單。這將按鈕的標(biāo)簽作為其參數(shù)。
>
在這一點(diǎn)上,我們現(xiàn)在可以添加一些動漫節(jié)目。 WP MVC自動處理WordPress儀表板上以模型名稱命名的新菜單。在這種情況下,新菜單的名稱應(yīng)為“動漫列表”。從那里您可以開始使用“添加新”子菜單添加新項(xiàng)目。require_once ABSPATH.'wp-admin/includes/upgrade.php'; global $wpdb; $sql = 'DROP TABLE ' . $wpdb->prefix . 'anime_lists'; $wpdb->query($sql);>
接下來,我們需要更新列出現(xiàn)有項(xiàng)目的代碼。您可以在以下路徑上找到它:
./wpmvc generate scaffold AnimeList AnimeList
默認(rèn)情況下,它包含以下代碼:
>這將導(dǎo)致表中每個行返回的錯誤,因?yàn)槲覀冊贏nime_lists表中沒有名稱字段。要解決此問題,我們要做的就是使用WP_ANIME_LISTS表上的字段:
<h2>Add Anime List</h2> <?php echo $this->form->create($model->name); ?> <?php echo $this->form->input('title'); ?> <?php echo $this->form->input('poster'); ?> <?php echo $this->form->input('plot'); ?> <?php echo $this->form->input('genres'); ?> <?php echo $this->form->input('producer'); ?> <?php echo $this->form->end('Add'); ?>
更新文件后,結(jié)果現(xiàn)在應(yīng)該看起來像這樣:
><h2>Edit Anime List</h2> <?php echo $this->form->create($model->name); ?> <?php echo $this->form->input('title'); ?> <?php echo $this->form->input('poster'); ?> <?php echo $this->form->input('plot'); ?> <?php echo $this->form->input('genres'); ?> <?php echo $this->form->input('producer'); ?> <?php echo $this->form->end('Update'); ?>
現(xiàn)在,我們可以繼續(xù)進(jìn)行網(wǎng)站的公開面向。 在我們繼續(xù)前進(jìn)之前,重要的是要知道,每當(dāng)我們使用命令行生成模型,控制器和視圖時。 WP MVC還為該模型分配了一個新頁面。因此,對于Animelists模型,它創(chuàng)建了Anime_Lists頁面。不要忘記在apache配置中啟用mod_rewrite,添加wordpress .htaccess文件,然后將永久鏈接設(shè)置設(shè)置為使用帖子名稱。
<?php echo $this->form->create($model->name); ?>為了方便起見,這是我正在使用的.htaccess文件:
>完成此操作后,您可以檢查是否可以訪問該頁面。默認(rèn)情況下,您不會在其中看到任何東西。這就是要處理的。

cd path/to/plugins/wp-mvc
首先,打開app/controllers/anime_lists_controller.php文件。這是Anime_Lists頁面的控制器。默認(rèn)情況下,它應(yīng)包含以下代碼:
>chmod +x wpmvc
>如果要堅(jiān)持從基本公共控制器(MVCPUBLICCONTROLLER)添加的默認(rèn)值,這很好。但是,如果您想對內(nèi)容進(jìn)行自定義,則必須使用以下內(nèi)容覆蓋索引方法:
./wpmvc generate plugin AnimeList我們上面正在做的是通過使用$ this-> params在基本控制器中提供默認(rèn)參數(shù)。然后,我們將其分配給一個變量,以便可以覆蓋默認(rèn)值。默認(rèn)情況下,控制器每頁從數(shù)據(jù)庫中選擇10個項(xiàng)目。如果我只想選擇6,我可以通過將per_page參數(shù)設(shè)置為6:
>這確實(shí)是我們需要自定義的全部。該代碼的其余部分僅在模型中使用Paginate方法創(chuàng)建一個集合。然后,該集合用于傳遞“對象”(動漫顯示),然后將分頁設(shè)置為視圖。
global $wpdb; $sql = ' CREATE TABLE '. $wpdb->prefix . 'animelists ( id int(11) NOT NULL auto_increment, title varchar(255) NOT NULL, poster varchar(255) NOT NULL, plot TEXT NOT NULL, genres TEXT default NULL, PRIMARY KEY (id) )'; dbDelta($sql);
現(xiàn)在打開負(fù)責(zé)呈現(xiàn)Anime_Lists頁面的視圖。它在app/views/anime_lists/index.php上。打開后,添加以下代碼:
require_once ABSPATH.'wp-admin/includes/upgrade.php'; global $wpdb; $sql = 'DROP TABLE ' . $wpdb->prefix . 'anime_lists'; $wpdb->query($sql);
此循環(huán)遍歷我們從控制器早些時候傳遞的所有對象。在循環(huán)內(nèi)部,我們渲染顯示每個對象的詳細(xì)信息的視圖。 render_view方法將視圖的名稱作為其第一個參數(shù),而我們要傳遞的數(shù)據(jù)作為第二個。
./wpmvc generate scaffold AnimeList AnimeList最后,我們輸出分頁。
接下來,在同一目錄上打開_item.php文件,然后添加以下代碼:
<h2>Add Anime List</h2> <?php echo $this->form->create($model->name); ?> <?php echo $this->form->input('title'); ?> <?php echo $this->form->input('poster'); ?> <?php echo $this->form->input('plot'); ?> <?php echo $this->form->input('genres'); ?> <?php echo $this->form->input('producer'); ?> <?php echo $this->form->end('Add'); ?>>
>這顯示了每個對象的詳細(xì)信息。從上面的代碼中可以看到,我們可以直接從$對象變量訪問每個字段。我們還使用稱為MVC_PUBLIC_URL的輔助函數(shù)來生成一個指向每個對象的單個頁面的URL。此方法占用一個數(shù)組,其中包含控制器的名稱和對象的ID。
<h2>Edit Anime List</h2> <?php echo $this->form->create($model->name); ?> <?php echo $this->form->input('title'); ?> <?php echo $this->form->input('poster'); ?> <?php echo $this->form->input('plot'); ?> <?php echo $this->form->input('genres'); ?> <?php echo $this->form->input('producer'); ?> <?php echo $this->form->end('Update'); ?>
這會生成類似于以下的URL:
><?php echo $this->form->create($model->name); ?>
接下來,我們還必須更新單個對象頁面。為此,請打開show.php文件。仍在同一目錄中。
<?php echo $this->form->input('title'); ?> <?php echo $this->form->input('poster'); ?> <?php echo $this->form->input('plot'); ?> <?php echo $this->form->input('genres'); ?> <?php echo $this->form->input('producer'); ?>
在這里沒有太大的區(qū)別。它基本上與上一個視圖中的輸出相同。只有這一次,我們還輸出了圖。
<?php echo $this->form->input('is_awesome', array('type' => 'checkbox')); ?>
我們還添加了一個鏈接到主要的Anime_lists頁面:
<?php echo $this->form->end('Add'); ?>讓事情有些愉悅。讓我們?yōu)榫W(wǎng)站的公眾面對面添加一些CSS。您可以在應(yīng)用程序/public/css目錄上添加樣式表。只需命名文件動漫列表。
cd path/to/plugins/wp-mvc為了使用我們剛剛創(chuàng)建的樣式表。在插件的應(yīng)用/配置目錄下創(chuàng)建Bootstrap.php文件。然后,我們添加以下代碼:
chmod +x wpmvc上面的代碼應(yīng)該看起來很熟悉。這是我們通常在WordPress中添加自定義腳本和樣式的方式。只有這次,我們使用了另一個稱為MVC_CSS_URL的輔助功能。此功能訪問了插件的機(jī)器友好名稱(提示:復(fù)制插件的文件夾名稱)和樣式表的文件名。
完成此操作后,您已經(jīng)在管理員側(cè)添加了一些項(xiàng)目。最終輸出應(yīng)該看起來像這樣:
>您可以在此github存儲庫上查看此插件中使用的代碼。

就是這樣!在本教程中,您通過創(chuàng)建利用它的插件來了解如何在WordPress中實(shí)現(xiàn)MVC。我們只在本教程中刮擦了表面。請務(wù)必查看WP MVC文檔以了解更多信息。你呢?您知道或使用其他任何MVC解決方案用于WordPress嗎?在評論中讓我們知道。
經(jīng)常詢問有關(guān)WordPress MVC
的問題WordPress MVC和傳統(tǒng)的WordPress開發(fā)之間有什么區(qū)別?
傳統(tǒng)的WordPress開發(fā)涉及使用PHP來創(chuàng)建主題和插件,而WordPress MVC(模型視圖控制器)是一種設(shè)計(jì)模式,是一種分隔的設(shè)計(jì)模式應(yīng)用程序邏輯分為三個互連組件。這種分離使開發(fā)人員可以更有效地管理復(fù)雜的應(yīng)用程序。該模型處理數(shù)據(jù)和業(yè)務(wù)邏輯,視圖管理數(shù)據(jù)顯示,并且控制器處理用戶輸入。該結(jié)構(gòu)使代碼更有條理,可重復(fù)使用且更易于維護(hù)。如何開始使用WordPress MVC?開始使用WordPress MVC,您需要安裝WordPress MVC框架。有幾種可用的選項(xiàng),例如WP MVC,Typerocket或Rareloop。安裝后,您可以開始為WordPress應(yīng)用程序創(chuàng)建模型,視圖和控制器。這些框架提供了詳細(xì)的文檔和教程,以幫助您開始。
>>使用WordPress MVC? 是的,您可以將WordPress MVC與WordPress MVC一起使用現(xiàn)有主題和插件。但是,您可能需要修改代碼以適合MVC結(jié)構(gòu)。也可以創(chuàng)建自己的基于MVC的主題和插件。 >我可以將WordPress MVC用于電子商務(wù)網(wǎng)站嗎? ,WordPress MVC可用于電子商務(wù)網(wǎng)站。它可以處理復(fù)雜的功能和大型數(shù)據(jù)庫,使其適用于在線商店。 我可以將WordPress MVC與其他編程語言一起使用嗎?>如果您熟悉MVC設(shè)計(jì)模式并且具有PHP的經(jīng)驗(yàn),很難學(xué)習(xí)WordPress MVC?學(xué)習(xí)WordPress MVC應(yīng)該相對簡單。但是,如果您是MVC或PHP的新手,則可能需要一些時間才能適應(yīng)結(jié)構(gòu)和語法。
>> wordpress MVC如何處理數(shù)據(jù)庫操作?
以上是開始使用WordPress MVC的詳細(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格式并控制文件大?。?.配置.htaccess啟用瀏覽器緩存,并接入CDN提升靜態(tài)資源加載速度;5.限制文章修訂版本并定期清理數(shù)據(jù)庫冗余數(shù)據(jù)。

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

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

在開發(fā)Gutenberg塊時,正確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.更新接口及模板以支持新字段展示與編輯,同時兼顧移動端適配和用戶體驗(yàn)。

在WordPress中添加自定義重寫規(guī)則的關(guān)鍵在于使用add_rewrite_rule函數(shù)并確保規(guī)則正確生效。1.使用add_rewrite_rule注冊規(guī)則,格式為add_rewrite_rule($regex,$redirect,$after),其中$regex是正則表達(dá)式匹配URL,$redirect指定實(shí)際查詢,$after控制規(guī)則位置;2.需通過add_filter添加自定義查詢變量;3.修改后必須刷新固定鏈接設(shè)置;4.建議將規(guī)則放在'top'以避免沖突;5.可借助插件查看當(dāng)前規(guī)則便于
