首先從網(wǎng)上下載出WordPress的插件Wp-syntax。
站在用戶的角度思考問題,與客戶深入溝通,找到寧化網(wǎng)站設(shè)計(jì)與寧化網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋寧化地區(qū)。
在編輯文章時(shí),使用HTML的編輯方式插入以下代碼pre lang=”LANGUAGE” line=”0″//“l(fā)ine為1時(shí)表示顯示行號”/pre
中間插入你的代碼即可,LANGUAGE改為語言類型,例如php、java。line為0不顯示行號,為1時(shí)顯示
在開始之前,需要注意三件事情
I、給插件取一個(gè)個(gè)性化的名字,越個(gè)性化越好,以防和其他插件重名沖突。
II、代碼里面,一定要包含注釋,不為自己,也要為想修改你代碼的別人想想。
III、盡量用最新版的 WordPress 進(jìn)行開發(fā)和測試。
插件名稱和插件結(jié)構(gòu)
一般來說,都是在 wp-content\plugins 目錄下建立一個(gè)文件夾,文件夾名就是插件的名稱,我們插件名字為"copyright_plugin",文件結(jié)構(gòu)如下。
\wp-content\plugins\copyright_plugin下有copyright_plugin.php和readme.txt
這里的 readme.txt 文件中包含了一些插件的介紹,使用說明等信息,主要是提交到 WordPress 官方網(wǎng)站時(shí)候用到的,可以參考他們給的模板 ,另外還有插件截圖預(yù)覽的功能,需要另外添加圖片,但是我們現(xiàn)在是練習(xí),不需要提交到官網(wǎng),所以暫時(shí)先不涉及這些。
插件的核心
總的來說,插件的核心是兩個(gè) function,用來添加 Hooks(中文譯為鉤子)
add_action ($hookname, $callbackfunction)
add_filter ($hookname,$callbackfunction)
這兩個(gè)方法相當(dāng)重要,幾乎所有的插件都要用到他們。
Actions,我理解就是 wordpress 核心代碼預(yù)留的一些特殊的切入點(diǎn),或者說是在執(zhí)行一些特定事件時(shí)候發(fā)生,例如文章發(fā)布時(shí),或者訪客留言時(shí)觸發(fā)。
Filters,應(yīng)該就是 wordpress 執(zhí)行時(shí),對數(shù)據(jù)傳輸過程的一種過濾機(jī)制,例如當(dāng)文章保存到數(shù)據(jù)庫的過程,或者文章從事數(shù)據(jù)庫中取出,展現(xiàn)到瀏覽器中的這個(gè)過程。
我們今天要制作的插件,應(yīng)該是用 Filters,因?yàn)槲覀円谖恼嘛@示在瀏覽器之前,在最后面加上一段字符竄,用來顯示版權(quán)信息,后面添加菜單項(xiàng)的時(shí)候,也要用到 Actions。
插件概要信息
用文本編輯器打開 copyright-plugin.php 文件,輸入如下信息:
?php
/*
Plugin Name: Copyright plugin
Plugin URI:
Description: 此插件將在文章正文最下面,顯示一行版權(quán)信息
Version: 1.0.0
Author: xcxc
Author URI:
License: GPL
*/
?
保存好文件,然后登錄 WordPress 后臺(tái),打開插件菜單,應(yīng)該就可以看到這個(gè)插件,已經(jīng)顯示在插件列表里面了,并且可以啟用這個(gè)插件試試,不過沒有任何效果,因?yàn)榈侥壳盀橹?,這個(gè)插件還沒有實(shí)現(xiàn)任何功能。
為插件實(shí)現(xiàn)功能
修改copyright_plugin.php
?php
/*
Plugin Name: Copyright plugin
Plugin URI:
Description: 此插件將在文章正文最下面,顯示一行版權(quán)信息
Version: 1.0.0
Author: xcxc
Author URI:
License: GPL
*/
/* 此插件將在文章正文最下面,顯示一行版權(quán)信息 */
function display_copyright() {
return "p style='color:red'本站點(diǎn)所有文章均為原創(chuàng),轉(zhuǎn)載請注明出處!/p";
}
?
保存好這個(gè)文件,然后打開正在用的主題文件夾,打開index.php 文件夾,找到 get_template_part( 'content', get_post_format() ); 并在下面添加如下代碼
if(function_exists('display_copyright')) {
echo display_copyright();
}
function_exists 是判斷 display_copyright 函數(shù)是否存在,因?yàn)楫?dāng)插件停用的時(shí)候,主題代碼里面是找不到這個(gè)函數(shù)的,所以要判斷一下,防止出錯(cuò)。
然后在 wordpress 后臺(tái)啟用該插件,再打開首頁看看效果吧!
至此,這段代碼,應(yīng)該可以勉強(qiáng)算是一個(gè)插件了。之所以說勉強(qiáng),是因?yàn)檫@個(gè)插件存在一個(gè)問題,需要手工去修改主題代碼,如果用戶換了主題的話,需要在新主題里面再次修改代碼,這個(gè)不好。
改良插件
還記得我們前面說過的 Hooks (鉤子)嗎,我們要開始用 Filter 鉤子了!
代碼修改copyright_plugin.php如下:
?php
/*
Plugin Name: Copyright plugin
Plugin URI:
Description: 此插件將在文章正文最下面,顯示一行版權(quán)信息
Version: 1.0.0
Author: xcxc
Author URI:
License: GPL
*/
add_filter( 'the_content', 'display_copyright' );
/* 這個(gè)函數(shù)在日志正文結(jié)尾處添加一段版權(quán)信息,并且只在 首頁 頁面才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . "p style='color:red'本站點(diǎn)所有文章均為原創(chuàng),轉(zhuǎn)載請指明出處!/p";
return $content;
}
?
參看以上代碼,其中 the_content 是鉤子的名字,display_copyright 是回調(diào)函數(shù)名稱。這樣一來,只要啟用插件就可以實(shí)現(xiàn)功能,無需去修改主題了,請把剛才在index.php 文件中添加的代碼刪掉,然后啟用插件,看看效果吧,顯示效果應(yīng)該是一樣的,無論怎么換主題,還是會(huì)自動(dòng)顯示版權(quán)信息。
is_home是判斷是不是主頁
更進(jìn)一步
至此一個(gè)真正的插件算是完成了。但是此插件將版權(quán)信息直接寫在代碼里,如果用戶想自定義版權(quán)信息的話,需要修改插件的源代碼,仍然不方便,所以此插件仍需改進(jìn)。其實(shí),我們可以在 WordPress 后臺(tái)中為插件單獨(dú)添加一個(gè)菜單和頁面,用戶可以在這里來自定義設(shè)置設(shè)置版權(quán)信息,信息可以保存在數(shù)據(jù)庫里面。
先附上完整代碼,后面會(huì)做說明
?php
/*
Plugin Name: Copyright plugin
Plugin URI:
Description: 此插件將在文章正文最下面,顯示一行版權(quán)信息
Version: 1.0.0
Author: xcxc
Author URI:
License: GPL
*/
/* 注冊激活插件時(shí)要調(diào)用的函數(shù) */
register_activation_hook( __FILE__, 'display_copyright_install');
/* 注冊停用插件時(shí)要調(diào)用的函數(shù) */
register_deactivation_hook( __FILE__, 'display_copyright_remove' );
function display_copyright_install() {
/* 在數(shù)據(jù)庫的 wp_options 表中添加一條記錄,第二個(gè)參數(shù)為默認(rèn)值 */
add_option("display_copyright_text", "p style='color:red'本站點(diǎn)所有文章均為原創(chuàng),轉(zhuǎn)載請注明出處!/p", '', 'yes');
}
function display_copyright_remove() {
/* 刪除 wp_options 表中的對應(yīng)記錄 */
delete_option('display_copyright_text');
}
if( is_admin() ) {
/* 利用 admin_menu 鉤子,添加菜單 */
add_action('admin_menu', 'display_copyright_menu');
}
function display_copyright_menu() {
/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); */
/* 頁名稱,菜單名稱,訪問級別,菜單別名,點(diǎn)擊該菜單時(shí)的回調(diào)函數(shù)(用以顯示設(shè)置頁面) */
add_options_page('Set Copyright', 'Copyright Menu', 'administrator','display_copyright', 'display_copyright_html_page');
}
function display_copyright_html_page() {
?
div
h2Set Copyright/h2
form method="post" action="options.php"
?php /* 下面這行代碼用來保存表單中內(nèi)容到數(shù)據(jù)庫 */ ?
?php wp_nonce_field('update-options'); ?
p
textarea
name="display_copyright_text"
id="display_copyright_text"
cols="40"
rows="6"?php echo get_option('display_copyright_text'); ?/textarea
/p
p
input type="hidden" name="action" value="update" /
input type="hidden" name="page_options" value="display_copyright_text" /
input type="submit" value="Save" class="button-primary" /
/p
/form
/div
?php
}
add_filter( 'the_content', 'display_copyright' );
/* 這個(gè)函數(shù)在日志正文結(jié)尾處添加一段版權(quán)信息,并且只在 首頁 頁面才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . get_option('display_copyright_text');
return $content;
}
?
說明:
以下代碼自己要是在啟用插件時(shí)和停用插件時(shí)調(diào)用,注釋中已經(jīng)寫得很詳細(xì)了。
/* 注冊激活插件時(shí)要調(diào)用的函數(shù) */
register_activation_hook( __FILE__, 'display_copyright_install');
/* 注冊停用插件時(shí)要調(diào)用的函數(shù) */
register_deactivation_hook( __FILE__, 'display_copyright_remove' );
function display_copyright_install() {
/* 在數(shù)據(jù)庫的 wp_options 表中添加一條記錄,第二個(gè)參數(shù)為默認(rèn)值 */
add_option("display_copyright_text", "p style='color:red'本站點(diǎn)所有文章均為原創(chuàng),轉(zhuǎn)載請注明出處!/p", '', 'yes');
}
function display_copyright_remove() {
/* 刪除 wp_options 表中的對應(yīng)記錄 */
delete_option('display_copyright_text');
}
添加菜單和頁面的代碼如下:
if( is_admin() ) {
/* 利用 admin_menu 鉤子,添加菜單 */
add_action('admin_menu', 'display_copyright_menu');
}
function display_copyright_menu() {
/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); */
/* 頁名稱,菜單名稱,訪問級別,菜單別名,點(diǎn)擊該菜單時(shí)的回調(diào)函數(shù)(用以顯示設(shè)置頁面) */
add_options_page('Set Copyright', 'Copyright Menu', 'administrator','display_copyright', 'display_copyright_html_page');
}
至此,已經(jīng)可以在后臺(tái)看到菜單項(xiàng)了,但是點(diǎn)擊的話,還會(huì)出錯(cuò),因?yàn)檫€沒有添加對應(yīng)的頁面(如何自定義添加后臺(tái)菜單位置)
下面開始添加頁面,主要代碼如下:
function display_copyright_html_page() {
?
div
h2Set Copyright/h2
form method="post" action="options.php"
?php /* 下面這行代碼用來保存表單中內(nèi)容到數(shù)據(jù)庫 */ ?
?php wp_nonce_field('update-options'); ?
p
textarea
name="display_copyright_text"
id="display_copyright_text"
cols="40"
rows="6"?php echo get_option('display_copyright_text'); ?/textarea
/p
p
input type="hidden" name="action" value="update" /
input type="hidden" name="page_options" value="display_copyright_text" /
input type="submit" value="Save" class="button-primary" /
/p
/form
/div
?php
}
現(xiàn)在再去點(diǎn)擊剛才新加的菜單,可以顯示出來一個(gè)頁面了,我們可以在這里設(shè)置版權(quán)信息文本。
另外還有如下代碼要修改
/* 這個(gè)函數(shù)在日志正文結(jié)尾處添加一段版權(quán)信息,并且只在 首頁 頁面才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . get_option('display_copyright_text');
return $content;
}
將原來的靜態(tài)化文本,改成動(dòng)態(tài)的,之所以要這么改,是因?yàn)槲覀円呀?jīng)將數(shù)據(jù)存到數(shù)據(jù)庫里面了,這里要從數(shù)據(jù)庫里面取出數(shù)據(jù)。
WWordPress的二次開發(fā)分為兩個(gè)主要方面:主題開發(fā)和插件開發(fā)。
1.主題開發(fā)首先,了解WordPress主題結(jié)構(gòu)很重要。WordPress主題由一套PHP文件、CSS文件和圖像文件組成。你可以通過編輯這些文件來自定義主題,使其適合你需要的風(fēng)格和功能推薦使用wordPress官方提供的主題開發(fā)文檔作為參考,其中包括了詳細(xì)的步票和代碼示例。
2.插件開發(fā):插件是一系列的功能代碼,用于向WordPress添加新功能或改進(jìn)現(xiàn)有功能。在開發(fā)插件之前,你需要先確定你想要添加的功能以及實(shí)現(xiàn)方式推薦使用WordPress官方提供的插件開發(fā)文檔作為參考,其中包括了詳細(xì)的步票和代碼示例司時(shí)也要學(xué)會(huì)使用WordPress提供的API來操作WordPress系統(tǒng),例如:WP_Query (用于查詢數(shù)據(jù)庫) 、wp_enqueue script (用于加載JavaScript) 等。
總之,在進(jìn)行WordPress二次開發(fā)時(shí),建議始終保持代碼結(jié)構(gòu)清晰易讀、注釋規(guī)范、避免出現(xiàn)與其他插件、主題沖突的問題,以確保你的開發(fā)工作能夠順利進(jìn)行并為用戶帶來良好的使用體驗(yàn)。