在wordpress上製做一款插件

原文出自:更多相關資訊,請閱讀原文javascript


使用了一段時間的wordpress , 發現不少功能須要本身寫。因而,就開始了學習怎麼在wp上面編寫一款插件,
在這裏和你們分享下。純屬新手製做。不妥之處,敬請指教。
php

首先;製做wp插件須要注意一下幾點css

  1. 給你的插件起個有意義的名字,讓人一看就知道你的插件是作什麼用的。這個名字最好是惟一的,由於網絡上不少wp 插件,爲了區分哪一個是你的做品,你最好給它起個‘特殊’的名字html

  2. 在插件的代碼裏面最好包含詳細的註釋,這樣對你之後維護起這個插件是很是有利的,並且,若是你的做品是優秀的,不少人會渴望能讀懂你的代碼,甚至在你的代碼上面二次開發,這時你的代碼註釋就顯得十分重要。java

  3. 對wp還有人用的版本測試一遍。以兼容多個版本。數據庫

新建一個插件

 

在wp-content/plugins 目錄下新建一個文件夾,以你的插件名字命名瀏覽器

標準插件信息

目錄中能夠有各類的css javascript html 圖片 等等文件,可是最主要的仍是要有一個主php文件網絡

插件的主文件頂部必須包括一個標準插件信息頭。WordPress經過標準信息頭識別插件的存在,並把她加入到控制面板的插件管理頁面,這樣插件才能激活,載入插件,並運行裏面的函數;若是沒有信息頭,插件將沒法激活和使用。標準信息插件頭的格式爲:app

<?php
 
/*
 
Plugin Name: 插件名
 
Plugin URI: 插件的介紹或更新地址
 
Description: 插件描述
 
Version: 插件版本,例如 1.0
 
Author: 插件做者名稱
 
Author URI: 插件做者的連接
 
License: A "Slug" license name e.g. GPL2
 
*/
 
?>


標準信息頭至少要包括插件名稱,這樣WordPress才能識別你的插件。其餘信息將顯示在控制面板插件管理頁面中。標準插件信息對各行順序沒有要求。編輯器

這樣的升級機制可以正確地讀出你的插件版本,建議你選擇一個格式的版本號,不一樣版本之間,並堅持下去。例如,x.x中或x.x.x或xx.xx.xxx

注意:文件必須是 UTF-8 格式!

 

Readme文件

若是你想將你的插件發佈到http://wordpress.org/extend/plugins/, 你必須在插件包中創建一個標準格式的readme.txt文件. 文件格式參見http://wordpress.org/extend/plugins/about/readme.txt.

你能夠訪問http://wordpress.org/extend/plugins/about/readme.txt 查看如何去格式化自述文件,或者訪問http://generatewp.com/plugin-readme/ 來使用文檔×××

須要注意的是,WordPress是經過自述文件來判斷這個插件是處於「必要」仍是「測試」狀態的。

 

版權信息

一般咱們還要用一個LICENSE.txt 插件的許可證信息。大多數插件使用GPLGPLCompatibleLicenses許可。若是使用GPL許可,能夠參考下一個標準的LICENSE 怎麼寫

 

編寫插件

理解wordpress插件鉤子

咱們的插件通常須要用一個或多個wordpress 的鉤子來關聯咱們的插件到wordpress核心程序中去,來完成咱們插件實現的功能,插件鉤子的運行機理是,當WordPress運行到不一樣階段,WordPress會檢查當前階段是否註冊了插件函數,若是是,那麼函數將被執行。經過執行插件函數改變了WordPress的默認功能。

好比咱們作一個在文章最後面添加一個文章的版權信息時。wordpress程序將文章顯示到瀏覽器前會檢查是否有插件註冊了一個名字爲 the_content的鉤子。若是有的話,那麼。就會將文章傳遞到這個鉤子的回調函數中去。那麼,咱們能夠在這個回調函數中處理這個文章,在文章的最後面添加一行咱們的版權信息。從而實現咱們插件功能。

wordpress 核心鉤子插件有兩個。

add_action ($hookname, $callbackfunction)
add_filter ($hookname,$callbackfunction)


其中$hooknane 是鉤子的名字。在須要用到這個鉤子的地方使用,如 the_content();

$callbackfunction 回調函數名。實現這個鉤子功能的函數

來看看這兩個核心功能的定義

function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
    global $wp_filter, $merged_filters;
  
    $idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
    $wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
    unset( $merged_filters[ $tag ] );
    return true;
}


至於add_action 彷佛和add_filter 沒有什麼區別,只是返回了add_filter函數,並無添加什麼新的處理。

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
 return add_filter($tag, $function_to_add, $priority, $accepted_args);
}


add_action 和 add_filter 函數的調用

<?php add_filter($tag,  $function_to_add,  $priority = 10,  $accepted_args = 1); ?>


參數:
$tag

(字符串)(必需)鏈接到$function_to_add的過濾器名稱

默認值:None

$function_to_add

(回調)(必需)應用過濾器時被調用函數的名稱

默認值:None

$priority

(整數)(可選)用於規定函數被執行的順序,函數與特定動做關聯。較小的數字匹配較早的執行,同等優先級的函數按加入action的順序被執行。

默認值:10

$accepted_args

(整數)(必需)函數所接受參數的數量。在WordPress 1.5.1及以後版本中,鏈接的函數可吸取其它在調用do_action() 或 apply_filters()時設置的參數。

默認值:None

用戶還須要爲過濾器回調時函數的命名空間提供一個指示器,如:

<?php add_filter(‘media_upload_newtab’, array(&$this, ’media_upload_mycallback’)); ?>


好,主要功能函數就介紹到這裏。接下來,用代碼編輯器打開copyright.php 文件

編寫版權信息

<?php  
/*
Plugin Name: cheongkinpui-first-plugins
Plugin URI: http://www.smaij.com/plugins/
Description: 這裏是插件的說明文字
Version: 1.0.0
Author: 張仔
Author URI: http://www.smaij.com/
License: GPL
*/
?>


保存文件後,在wordpress 後臺能夠自動檢測到插件

11.png

點擊啓用。你的插件就開始工做了。

到這裏,一個wordpress插件正常工做了,可是他沒有提供任何功能

而咱們要讓他實如今每一篇文章後面添加上文章的版權信息。

插件功能編寫

這個插件須要實現兩個功能

  • 插件自動爲每一個單篇閱讀的文章最後面添加文章版權信息

  • 插件要在後臺能夠自定義輸出的版權信息

首先。當用戶啓用插件,後臺功能欄中須要顯示這個插件設置

用戶停用插件時則移除這個設置項

使用 wordpress 的 register_activation_hook 和 register_deactivation_hook 函數

這樣。咱們啓用這個插件的時候,就會想數據庫插入一個記錄。記錄着默認的版權文字信息

插件還要求能夠在後臺更改這個版權信息的。

要實現這個,添加如下代碼

/* 註冊  激活插件時調用函數*/
register_activation_hook(__FILE__,'install_copyright');
 
/* 註冊  停用插件時調用函數*/
register_deactivation_hook(__FILE__,'remove_copyright');
 
//激活調用函數
function  install_copyright(){
  //添加到數據庫中去
  add_option("copyright_text","<p class='copyright'>轉載註明出處</p>",'','yes');
}
 
//停用調用函數
function remove_copyright(){
// 刪除 wp_options 表中的copyright_text對應記錄 
 delete_option('copyright_text');
}
//判斷是後臺管理頁面
if( is_admin() ){
  //添加wp 後臺菜單。使用
  add_action('admin_menu','copyright_menu');
}
 
function copyright_menu(){
  /* 頁名稱,菜單名稱,訪問級別,菜單別名,點擊該菜單時的回調函數(用以顯示設置頁面) */
  add_options_page('設置版權信息','版權信息','administrator','顯示博客版權信息','copyright_html');
}
 
function copyright_html(){
?>
<div>
<h2>設置博客版權信息</h2>
<form method='post' action='options.php'>
 
    <?php wp_nonce_field('update-options'); ?>
  <p>  
    <textarea  
      name="copyright_text"
      id="copyright_text"
      cols="40"
      rows="6">
      <?php echo get_option('copyright_text'); //讀取數據庫中的原版權文章 ?>
    </textarea>  
  </p> 
 
  <input type="hidden" name="action" value="update" />  
    <input type="hidden" name="page_options" value="copyright_text" />
  <input type="submit" value="保存" class="button-primary" />  
</form>
</div>
 
<?php 
}
 
//添加掛鉤the_content 
add_filter( 'the_content' , 'display_copyright' );
 
/*hook 傳入 文章內容,
*在文章內容後面添加copyright 
*輸出新的content
**/
function display_copyright($content){
//判斷是不是單頁中的
  if( is_single() )
//get_option('copyright_text') 從數據庫中取出copyright 信息
 $content .= get_option('copyright_text');
 return $content;
  
}
 
?>

這樣,在文章單頁中就可以顯示版權信息了

2.png

也能夠在後臺設置要顯示的文字信息了。

3.png

相關文章
相關標籤/搜索