I .給插件起壹個個性化的名字。越個性化越好,以防和其他插件沖突。
二。在代碼中,妳必須包含註釋,不是為妳自己,也是為其他想修改妳代碼的人。
三。盡量使用最新版本的WordPress進行開發和測試。
插件名稱和插件結構
壹般來說,在wp-content\plugins目錄下創建壹個文件夾,文件夾名就是插件的名稱。我們插件的名字是“copyright_plugin”,文件結構如下。
\ WP-content \ plugins \ copyright _ plugin有copyright_plugin.php和readme.txt
這裏的readme.txt文件包含了插件的介紹和使用說明等壹些信息,主要是在提交到WordPress官網的時候使用。可以參考他們給的模板,還有插件截圖預覽的功能。妳需要補充圖片,但是我們現在正在練習,不需要提交到官網,所以暫時不涉及這些。
插件的核心
壹般來說,插件的核心是兩個功能,用來添加鉤子。
add_action ($hookname,$callbackfunction)
add_filter ($hookname,$callbackfunction)
這兩個方法非常重要,幾乎所有的插件都使用它們。
動作,我的理解是wordpress核心代碼預留的壹些特殊的入口點,或者是在執行某些事件時發生,比如文章發布或者訪客留言。
過濾器應該是wordpress執行時數據傳輸的過濾機制,比如將文章保存到數據庫的過程,或者將文章從數據庫中取出並呈現給瀏覽器的過程。
我們今天要做的插件要用濾鏡,因為在文章顯示在瀏覽器之前,我們需要在文章末尾加壹個字符通靈來顯示版權信息,後面添加菜單項的時候也需要使用動作。
插件概要信息
用文本編輯器打開copyright-plugin.php文件,並輸入以下信息:
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
/*
插件名稱:版權插件
插件URI:
描述:這個插件會在文章正文底部顯示壹行版權信息。
版本:1.0.0
作者:xcxc
作者URI:
許可證:GPL
*/
& gt
保存文件,然後登錄WordPress後臺,打開插件菜單。妳應該能看到這個插件,這個插件已經顯示在插件列表裏了,妳可以啟用這個插件試試,但是沒有效果,因為到目前為止,這個插件還沒有實現任何功能。
實現插件的功能
修改版權_插件. php
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
/*
插件名稱:版權插件
插件URI:
描述:這個插件會在文章正文底部顯示壹行版權信息。
版本:1.0.0
作者:xcxc
作者URI:
許可證:GPL
*/
/*這個插件會在文章正文底部顯示壹行版權信息*/
函數display_copyright() {
return " & ltp style = ' color:red ' & gt;本站所有文章均為原創,轉載請註明出處!& lt/p >;;
}
& gt
保存這個文件,然後打開正在使用的主題文件夾,打開index.php文件夾,找到get _ template _ part ('content ',get _ post _ format());並在下面添加以下代碼。
if(function _ exists(' display _ copyright '){
回聲顯示_版權();
}
Function_exists是判斷display_copyright函數是否存在,因為停用插件時在主題代碼中找不到這個函數,所以判斷壹下以防出錯。
然後在wordpress後臺啟用插件,再打開首頁看看效果!
此時,這段代碼應該勉強算是壹個插件。無奈,因為這個插件有問題,需要手動修改主題代碼。如果用戶改變了主題,妳需要在新的主題中再次修改代碼,這樣不好。
改進的插件
還記得我們之前說過的鉤子嗎?我們要開始用過濾鉤了!
代碼修改copyright_plugin.php如下:
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
/*
插件名稱:版權插件
插件URI:
描述:這個插件會在文章正文底部顯示壹行版權信息。
版本:1.0.0
作者:xcxc
作者URI:
許可證:GPL
*/
add_filter( 'the_content ',' display _ copyright ');
/*該函數在日誌文本的末尾添加壹條版權信息,並且只添加*/
功能顯示_版權($content){
if( is_home())
$content = $content。“& ltp style = ' color:red ' & gt;本站所有文章均為原創,轉載請註明出處!& lt/p >;;
返回$ content
}
& gt
看上面的代碼,其中_content是鉤子的名字,display_copyright是回調函數的名字。這樣只要啟用插件就可以實現功能,不需要修改主題。請刪除剛剛添加到index.php文件中的代碼,然後啟用插件來查看效果。顯示效果應該是壹樣的。無論妳怎麽改主題,版權信息都會自動顯示。
Is_home是判斷是否是主頁。
進壹步地
至此,壹個真正的插件完成了。但是這個插件直接把版權信息寫在代碼裏。如果用戶想自定義版權信息,還是不方便修改插件的源代碼,所以這個插件還是需要改進的。實際上,我們可以在WordPress後臺為插件添加單獨的菜單和頁面,用戶可以在這裏自定義和設置版權信息,信息可以保存在數據庫中。
先附上完整的代碼,後面會解釋。
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
/*
插件名稱:版權插件
插件URI:
描述:這個插件會在文章正文底部顯示壹行版權信息。
版本:1.0.0
作者:xcxc
作者URI:
許可證:GPL
*/
/*註冊插件激活時要調用的函數*/
register _ activation _ hook(_ _ FILE _ _,' display _ copyright _ install ');
/*註冊以停用插件時要調用的函數*/
register _ deactivation _ hook(_ _ FILE _ _,' display _ copyright _ remove ');
函數display_copyright_install()
/*在數據庫的wp_options表中添加壹條記錄,第二個參數是默認值*/
add _ option(" display _ copyright _ text "," & ltp style = ' color:red ' & gt;本站所有文章均為原創,轉載請註明出處!& lt/p >;,'','是');
}
函數display_copyright_remove() {
/*刪除wp_options表中的相應記錄*/
delete _ option(' display _ copyright _ text ');
}
if( is_admin() ) {
/*使用admin_menu掛鉤添加菜單*/
add_action('admin_menu ',' display _ copyright _ menu ');
}
函數display_copyright_menu() {
/* add_options_page( $page_title,$menu_title,$capability,$menu_slug,$ function);*/
/*頁面名稱、菜單名稱、訪問級別、菜單別名、點擊菜單時的回調函數(顯示設置頁面)*/
add_options_page('設置版權','版權菜單','管理員','顯示_版權','顯示_版權_ html _頁面');
}
函數display_copyright_html_page() {
& gt
& ltdiv & gt
& lth2 & gt設置版權& lt/H2 & gt;
& ltform method = " post " action = " options . PHP " & gt;
& lt?Php /*下面壹行代碼用於將表單內容保存到數據庫*/?& gt
& lt?PHP WP _ nonce _ field(' update-options ');?& gt
& ltp & gt
& lt文本區域
name="display_copyright_text "
id = " display _ copy _ text "
cols="40 "
rows="6 " >& lt?PHP echo get _ option(' display _ copyright _ text ');?& gt& lt/textarea & gt;
& lt/p & gt;
& ltp & gt
& ltinput type = " hidden " name = " action " value = " update "/& gt;
& ltinput type = " hidden " name = " page _ options " value = " display _ copyright _ text "/& gt;
& ltinput type = " submit " value = " Save " class = " button-primary "/& gt;
& lt/p & gt;
& lt/form & gt;
& lt/div & gt;
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
}
add_filter( 'the_content ',' display _ copyright ');
/*該函數在日誌文本的末尾添加壹條版權信息,並且只添加*/
功能顯示_版權($content){
if( is_home())
$content = $content。get _ option(' display _ copyright _ text ');
返回$ content
}
& gt
描述:
下面這段代碼本身是在插件啟用和禁用時調用的,評論裏已經詳細寫了。
/*註冊插件激活時要調用的函數*/
register _ activation _ hook(_ _ FILE _ _,' display _ copyright _ install ');
/*註冊以停用插件時要調用的函數*/
register _ deactivation _ hook(_ _ FILE _ _,' display _ copyright _ remove ');
函數display_copyright_install()
/*在數據庫的wp_options表中添加壹條記錄,第二個參數是默認值*/
add _ option(" display _ copyright _ text "," & ltp style = ' color:red ' & gt;本站所有文章均為原創,轉載請註明出處!& lt/p >;,'','是');
}
函數display_copyright_remove() {
/*刪除wp_options表中的相應記錄*/
delete _ option(' display _ copyright _ text ');
}
添加菜單和頁面的代碼如下:
if( is_admin() ) {
/*使用admin_menu掛鉤添加菜單*/
add_action('admin_menu ',' display _ copyright _ menu ');
}
函數display_copyright_menu() {
/* add_options_page( $page_title,$menu_title,$capability,$menu_slug,$ function);*/
/*頁面名稱、菜單名稱、訪問級別、菜單別名、點擊菜單時的回調函數(顯示設置頁面)*/
add_options_page('設置版權','版權菜單','管理員','顯示_版權','顯示_版權_ html _頁面');
}
此時,妳已經可以在後臺看到菜單項了,但是如果點開就會出錯,因為還沒有添加相應的頁面(如何自定義添加後臺菜單的位置)。
讓我們開始添加頁面。主要代碼如下:
函數display_copyright_html_page() {
& gt
& ltdiv & gt
& lth2 & gt設置版權& lt/H2 & gt;
& ltform method = " post " action = " options . PHP " & gt;
& lt?Php /*下面壹行代碼用於將表單內容保存到數據庫*/?& gt
& lt?PHP WP _ nonce _ field(' update-options ');?& gt
& ltp & gt
& lt文本區域
name="display_copyright_text "
id = " display _ copy _ text "
cols="40 "
rows="6 " >& lt?PHP echo get _ option(' display _ copyright _ text ');?& gt& lt/textarea & gt;
& lt/p & gt;
& ltp & gt
& ltinput type = " hidden " name = " action " value = " update "/& gt;
& ltinput type = " hidden " name = " page _ options " value = " display _ copyright _ text "/& gt;
& ltinput type = " submit " value = " Save " class = " button-primary "/& gt;
& lt/p & gt;
& lt/form & gt;
& lt/div & gt;
& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
}
現在,單擊新添加的菜單,顯示壹個頁面,我們可以在其中設置版權信息文本。
還有以下代碼需要修改。
/*該函數在日誌文本的末尾添加壹條版權信息,並且只添加*/
功能顯示_版權($content){
if( is_home())
$content = $content。get _ option(' display _ copyright _ text ');
返回$ content
}
原來的靜態文本變成了動態文本。這種變化的原因是我們已經將數據保存在數據庫中,這裏我們想將數據從數據庫中取出。