時(shí)間:2015-01-27 13:16:21 瀏覽:2529次
WordPress是一種使用PHP語言開發(fā)的博客平臺(tái),用戶可以在支持PHP和MySQL數(shù)據(jù)庫的服務(wù)器上架設(shè)屬于自己的網(wǎng)站。也可以把 WordPress當(dāng)作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來使用。WordPress 功能強(qiáng)大,插件眾多,易于擴(kuò)充功能。安裝使用都非常方便。
為了更好的來應(yīng)用WordPress建站豐富該類網(wǎng)站的功能,必要的插件是不可少的。而今天筆者小丹要分享給大家的這篇文章就是關(guān)于WordPress插件開發(fā)的幾條建議。
1、使用正確的Hooks。Hooks是你的插件之間的橋梁和更大的生態(tài)系統(tǒng)(WordPress)。你不能寫插件沒有hooks,你會(huì)驚訝地發(fā)現(xiàn)有多少插件濫用它們。
第一步的正確使用hooks僅僅在于花適當(dāng)?shù)臅r(shí)間通讀的官方文檔鉤子插件API。最終你想深入了解的鉤的火災(zāi)序列——從頁面請(qǐng)求的一部分,將內(nèi)容發(fā)送到瀏覽器的行動(dòng)參考API向我們展示了通常在什么訂單的事情。有很多可供選擇的hooks取決于你的插件,你可能需要在許多的線。
我總是遵守分裝的實(shí)踐功能盡可能relevantly-distributed穿越我的hooks。這是因?yàn)椴寮_發(fā),采用“非常及時(shí)”(JIT)心態(tài)通過只運(yùn)行代碼的時(shí)候需要的是一個(gè)好主意。如果你需要設(shè)置一些全局變量或寄存器類型,不管那頁面加載的時(shí)候,什么應(yīng)該被解雇init。你不應(yīng)該準(zhǔn)備HTML也不做任何繁重的處理init在大多數(shù)情況下。在任何艱苦的處理inithooks將意味著所有前端頁面加載,管理頁面加載AJAX請(qǐng)求。這樣將受到這些沉重的過程導(dǎo)致的延遲。這不是理想!應(yīng)該避免更好的性能。通常,我只使用 init hooks:
(1)排隊(duì)的腳本
(2)本地化腳本
(3)檢索設(shè)置(根據(jù)用戶類型和頁面請(qǐng)求)
下面的代碼塊是一個(gè)通用的例子我有條件地隊(duì)列的腳本init。你會(huì)看到我小心喂只對(duì)每個(gè)類型的頁面所需的資源,沒有管理樣式表除非用戶加載的插件管理頁面。同樣,沒有后端接口的前端加載樣式表。
<?php
#} Plugin Init
add_action('init', 'examplePlugin_init');
function examplePlugin_init(){
global $examplePlugin_Settings; #req
#} Retrieve settings (if not loaded)
$settings = $examplePlugin_Settings->getAll();
#} Admin & Public (Global) Scripts
wp_enqueue_script("jquery");
#} Enqueuement for Public & Admin seperately
if (!is_admin()){
#} Public only
#} Public-Global - JS & CSS
wp_enqueue_script('examplepluginjs', plugins_url('/js/examplePlugin.min.js',__FILE__),array('jquery'));
wp_enqueue_style('exampleplugincss', plugins_url('/css/examplePlugin.min.css',__FILE__) );
#} Any specifically enabled elements
if ($settings['showElement'] == 1) wp_enqueue_script('examplepluginextrajs', plugins_url('/js/examplePlugin.extraFeature.min.js',__FILE__), array('jquery'));
} else {
#} Admin only
#} Admin-Global - JS & CSS
#} Try not to use these, unless specifically necessary, use the below method
#} Admin only + specifically a plugin admin page
if (examplePlugin_isAdminPage()) {
#} Plugin-specific Admin styles
wp_enqueue_style('examplepluginadmincss', plugins_url('/css/examplePlugin.admin.min.css',__FILE__) );
}
#} Admin only + WordPress Edit Page specifically
if (examplePlugin_is_edit_page()){
#} Anything which is to load on the edit post/edit page, page
#} For example shortcode inserter functionality
} else {
#} Anything which is to load on non-editor admin pages
}
#} Admin only + WordPress editor on page
if (get_user_option('rich_editing') == 'true') {
#} This is another way of targetting the WordPress Editor
#} In this instance we use this to localize a script:
wp_localize_script( 'examplepluginadminjs', 'exampleAJAX', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
}
}
}
#} Example function for detecting if the requested page is an edit page
function examplePlugin_is_edit_page($new_edit = null){
#} Global
global $pagenow;
#} Ensure we are in admin
if (!is_admin()) return false;
#} Detect edit page type
if($new_edit == "edit") #} Edit page
return in_array( $pagenow, array( 'post.php', ) );
elseif($new_edit == "new") #} New Edit page
return in_array( $pagenow, array( 'post-new.php' ) );
else #} New or Edit page
return in_array( $pagenow, array( 'post.php', 'post-new.php' ) );
}
#} Determines if this is our admin page
function examplePlugin_isAdminPage(){
#} This is defined on init, and is a simple array of page slugs
global $examplePlugin_slugs;
#} Detect page
if (isset($_GET['page'])) if (in_array($_GET['page'],$examplePlugin_slugs)) return true;
return false;
}
除了init,您可能需要使用一個(gè)組合下列行動(dòng)掛鉤的,這對(duì)大多數(shù)插件足以模塊化的代碼邏輯不會(huì)造成性能問題或可維護(hù)性的挑戰(zhàn)。
admin_menu
admin_notices
wp_head
wp_footer
wp_ajax_[yourFunction]
注意:一些主題會(huì)下降wp_footer,(有時(shí)甚至wp_head),支持他們自己的版本。這些WordPress主題通常quickly-written或hack-y品種,但它們比你想象的更常見。所以總是測(cè)試您的插件與盡可能多的主題,如果你的目的是提供普遍的兼容性。
2、利用WP Cron。Cron任務(wù)調(diào)度系統(tǒng)最初建立的UNIX用戶可以在指定的時(shí)間執(zhí)行命令。你知道WordPress核心cron-like功能建立在嗎?這一特性是地叫wp cron。如果你的插件有一個(gè)日常任務(wù)需要運(yùn)行wp cron的任務(wù)可能是有用的。wp cron雖然有其局限性。例如,它依賴于web頁面的請(qǐng)求導(dǎo)致延遲發(fā)射任務(wù)如果WordPress站點(diǎn)沒有高流量。但這些限制是可以解決的。交通繁忙的網(wǎng)站,對(duì)于那些與auto-pinging設(shè)置,wp cron可以是一個(gè)愉快的方式來創(chuàng)建一個(gè)cron-like設(shè)置。
其他不為人知的但有用的WordPress特點(diǎn)是:
admin notices
wp_remote_get
wp_remote_post
human_time_diff
zeroise
wp_send_json_success
wp_send_json_error
Pluggable Functions
3、利用自動(dòng)更新。WordPress 3.7以來,自動(dòng)更新可用的WordPress插件和主題開發(fā)者。這個(gè)功能在默認(rèn)情況下不啟用。用戶必須打開或通過你的插件。后者不建議,因?yàn)楦碌挠脩魬?yīng)該顯式地選擇進(jìn)入。然而,很好突出或提醒用戶自動(dòng)升級(jí)選項(xiàng)通過你的插件的管理界面。如果啟用,自動(dòng)更新是一個(gè)很好的工具連續(xù)WordPress插件開發(fā)。它很適合推出安全補(bǔ)丁,熱修復(fù)程序和版本發(fā)布。在WordPress.org上列出的插件受益于自動(dòng)管理插件的版本庫。
4、考慮使用MVC設(shè)計(jì)模式。WordPress插件獲得很大收益時(shí)使用MVC體系結(jié)構(gòu)創(chuàng)建的。模塊化、可維護(hù)性和許多其他原因,沒有更好的選擇。MVC使得它很容易清潔和組織你的插件架構(gòu)。奇怪的場(chǎng)合,我仍然使用我稱之為“野生代碼”架構(gòu)。這是給小插件,一次性的有時(shí)演示功能。下面你將看到這兩個(gè)目錄結(jié)構(gòu)我通常使用插件:“野生”架構(gòu)版本向左、向右和MVC。它會(huì)給你一個(gè)更好的主意關(guān)于MVC的區(qū)別可以:
此外,所有我寫包含一個(gè)新插件documentation目錄與HTML文檔組成,languages插件目錄和Sass版本的樣式表。目前,我想說現(xiàn)在預(yù)處理器之間的標(biāo)準(zhǔn)工具,你會(huì)發(fā)現(xiàn)專業(yè)WP插件開發(fā)人員的工具集??纯唇裉斓慕榻B實(shí)現(xiàn)MVC插件開發(fā)——這是一個(gè)偉大的底漆。
5、插件文件名稱唯一。別忘了你的插件將被安裝在“忙碌的生態(tài)系統(tǒng)”,甚至在同一時(shí)間作為你的競(jìng)爭對(duì)手的插件。獨(dú)特的名稱你的文件和變量是至關(guān)重要的。最簡單的方法將前綴定制PHP變量、類、函數(shù)、CSS選擇器和文件名稱與插件的名字。
6、測(cè)試您的插件徹底。任何好的軟件開發(fā)周期的最后一部分是拋光、準(zhǔn)備和測(cè)試要發(fā)布的產(chǎn)品。這里是我的建議,當(dāng)你準(zhǔn)備部署你的插件的最初版本或正準(zhǔn)備發(fā)布一個(gè)版本:
(1)調(diào)試你的插件wp_debug啟用,直到一切都解決了。
(2)測(cè)試一個(gè)新的WordPress的插件安裝。
(3)測(cè)試插件使用多個(gè)WordPress主題。
(4)考慮測(cè)試插件在舊WordPress版本和PHP版本,你懷疑可能影響插件的功能。
(5)分析和測(cè)試您的插件和瀏覽器開發(fā)工具(DevTools為移Chrome,Firefox的Firebug,等等)。
(6)壓縮所有前端文件(HTML、CSS和圖像)。包括non-minified版本的樣式表和HTML文件,插件用戶可以進(jìn)行自定義修改。
(7)寫好的文檔。資料員可以用這個(gè)過程是有益的。
7、允許用戶自定義插件。有一個(gè)秘密你的用戶是不會(huì)告訴你的,他們摸索在幕后與你的插件的源代碼。WordPress用戶比任何其他組軟件和我打過交道的客戶,挖掘代碼。許多插件客戶也買你的插件的開發(fā)人員提供的功能添加到他們的WordPress項(xiàng)目。任何插件一個(gè)大鐵桿通常設(shè)計(jì)和可定制性或處理支持門票的忿怒。而不是讓插件定制困難,迫使客戶插件的源代碼,摸給你的用戶選項(xiàng)和api允許他們?yōu)樗麄兊男枨蠖ㄖ撇寮墓δ?。全局設(shè)置應(yīng)設(shè)置通過插件的管理界面。單實(shí)例設(shè)置,例如專為WordPress文章或自定義設(shè)置頁面可以通過為用戶提供一個(gè)定制的短碼為您的插件API。
我相信你的插件,用戶應(yīng)該在最低限度能夠做到以下幾點(diǎn):
(1)改變風(fēng)格,如顏色、圖標(biāo)、邊界、字體、背景等等考慮創(chuàng)建多個(gè)插件主題(黑、光等)。
(2)啟用/禁用可選第三方依賴項(xiàng)(例如Google Analytics、Facebook API等等)。
(3)啟用/禁用某些功能的插件
(4)改變前置文本標(biāo)簽(如標(biāo)簽用來描述UI按鈕和輸入字段)
(5)覆蓋插件的默認(rèn)CSS通過管理界面
其他的方式來讓你的用戶:提供預(yù)處理器版本的樣式表。用戶喜歡使用少定制插件的外觀Sass或另一個(gè)CSS預(yù)處理器會(huì)感謝你的。有一個(gè)良好的HTML結(jié)構(gòu)。經(jīng)常與CSS用戶重塑插件的主題放在他們的WordPress主題styles.css。使它容易選擇特定元素的插件有一個(gè)好的HTML建筑元素、直觀 class和id的名字。解釋如何通過文檔修改插件設(shè)置。最后,別忘了給你的插件“還原默認(rèn)設(shè)置”功能。這“工廠復(fù)位”功能是好的,當(dāng)災(zāi)難發(fā)生在定制。
8、優(yōu)先考慮插件的性能。性能應(yīng)該開發(fā)一個(gè)插件時(shí)必須考慮的首要問題。每個(gè)組件應(yīng)該優(yōu)化速度。最后,您的用戶可能會(huì)使用很多插件,使每個(gè)頁面加載生產(chǎn)過一把把的PHP文件。瘦的你可以讓你的插件就越好。只要有可能建立緩存,尤其是多實(shí)例環(huán)境。
高于一切:測(cè)試。測(cè)試在多個(gè)主機(jī)與幾個(gè)主題與其他插件。P3分析器是一個(gè)極好的工具,它將幫助你優(yōu)化你的插件的源代碼。
9、把精力放在品牌插件。本文對(duì)你可能并不重要,也許你發(fā)布插件只是為了好玩。也許你的主要目標(biāo)是WordPress社區(qū)回饋。無論是為了好玩還是利潤,我認(rèn)為每一個(gè)插件應(yīng)該至少一個(gè)好球即使沒有金錢交易的手。為什么要讓插件如果你不想在WP用戶的手嗎?有成千上萬的免費(fèi)插件發(fā)布到社區(qū),花時(shí)間制定好視覺品牌標(biāo)識(shí)。像任何產(chǎn)品,WordPress插件受到市場(chǎng)競(jìng)爭。在WordPress站在熙熙攘攘的市場(chǎng),您將需要執(zhí)行所有類型的工作角色,包括角色以外的開發(fā),如設(shè)計(jì)、營銷、搜索引擎優(yōu)化、文案等等。是不夠的有一個(gè)偉大的插件,沒有人會(huì)使用它如果沒有人知道關(guān)于它。
品牌一個(gè)插件是一門藝術(shù)和科學(xué)。為此,我雇傭一個(gè)設(shè)計(jì)師設(shè)計(jì)一個(gè)標(biāo)志和“外觀和感覺”為所有新插件我釋放到高端市場(chǎng)。有時(shí),如果這是一個(gè)小的事情我將試著做它自己,這幾乎不起作用。良好的品牌和一個(gè)偉大的插件將帶你走得很遠(yuǎn)。除此之外,建設(shè)一個(gè)成功的WordPress插件業(yè)務(wù)主要是創(chuàng)意的游戲 ->發(fā)展 ->市場(chǎng)營銷,然后優(yōu)化循環(huán)。
以下是特定于插件的關(guān)鍵教訓(xùn)我學(xué)到銷售:每個(gè)插件應(yīng)該添加一個(gè)神奇的功能而不是十個(gè)平庸的人,保持簡單;價(jià)格應(yīng)該基于插件可以添加的價(jià)值給客戶;偉大的客戶服務(wù)是非常重要的;構(gòu)建一個(gè)off-marketplace商業(yè)網(wǎng)站(不要依靠市場(chǎng)配置文件);不要打擊競(jìng)爭對(duì)手;專注于創(chuàng)造一個(gè)偉大的產(chǎn)品人們想使用。
有一些痛苦的挑戰(zhàn)推動(dòng)市場(chǎng)的WordPress插件。它可以創(chuàng)建一張支持票風(fēng)暴激烈請(qǐng)求退款、one-star-review困境。使用上面的實(shí)踐中,我們?cè)O(shè)法減少大量的這些挑戰(zhàn),我越來越發(fā)現(xiàn)一個(gè)雙贏的方式從WordPress開發(fā)創(chuàng)收。
(轉(zhuǎn)載請(qǐng)注明轉(zhuǎn)自:m.gafsjz.com/news/n1607.htm,謝謝!珍惜別人的勞動(dòng)成果,就是在尊重自己!)
24小時(shí)服務(wù)熱線:400-1180-360
業(yè)務(wù) QQ: 444961110電話: 0311-80740308
渠道合作: 444961110@qq.com
河北供求互聯(lián)信息技術(shù)有限公司(河北供求網(wǎng))誕生于2003年4月,是康靈集團(tuán)旗下子公司,也是河北省首批從事網(wǎng)站建設(shè)、電子商務(wù)開發(fā),并獲得國家工業(yè)和信息化部資質(zhì)認(rèn)證的企業(yè)。公司自成立以來,以傳播互聯(lián)網(wǎng)文化為已任, 以高科技為起點(diǎn),以網(wǎng)絡(luò)營銷研究與應(yīng)用為核心,致力于為各企事業(yè)單位提供網(wǎng)絡(luò)域名注冊(cè)、虛擬主機(jī)租用、網(wǎng)站制作與維護(hù)、網(wǎng)站推廣和宣傳、網(wǎng)站改版與翻譯、移動(dòng)互聯(lián)網(wǎng)營銷平臺(tái)開發(fā)與運(yùn)營、企業(yè)郵局、網(wǎng)絡(luò)支付、系統(tǒng)集成、軟件開發(fā)、電子商務(wù)解決方案等優(yōu)質(zhì)的信息技術(shù)服務(wù),與中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心、騰訊、百度、阿里巴巴、搜狗、360、電信、聯(lián)通、中國數(shù)據(jù)、萬網(wǎng)、中資源、陽光互聯(lián)、點(diǎn)點(diǎn)客、北龍中網(wǎng)、電信通等達(dá)成戰(zhàn)略合作伙伴關(guān)系。
版權(quán)所有 ? 河北供求互聯(lián)信息技術(shù)有限公司-優(yōu)秀的石家莊網(wǎng)站建設(shè)公司,為您提供石家莊網(wǎng)站建設(shè)、網(wǎng)站推廣等優(yōu)質(zhì)服務(wù).
服務(wù)熱線:400-1180-360 增值電信業(yè)務(wù)經(jīng)營許可證:冀B2-20105159 冀ICP備09010972號(hào)
掃一掃
贈(zèng)送神秘大禮
全國免費(fèi)服務(wù)熱線
400-1180-360