(圖片來源)
找了很多的相關的插件開發框架,一直在尋找一個適合 laravel 開發者的框架,最後找到了一個挺適合的框架,開發文件也還算完整 (文件),下方是文件針對此框架的描述:
This framework solution offers WordPress templates to improve the development of custom themes and plugins by integrating them with Composer and Lightweight MVC.
接下來的內容會透過四個步驟,讓大家輕鬆且快速地開發你第一個插件,之後就可以大聲地說:「我會開發插件了! 」。
STEP1. 下載 github 上的專案 (github)
開啟 github 專案頁面
下載專案 zip 檔
解壓縮 zip 檔案並將插件框架資料夾放在 “wordpress專案/wp-content/plugins 目錄下"。
將資料夾名稱改成 myFirstPlugin (也可以改成自己喜歡的名稱)。
STEP2. 安裝插件
為了防止與使用此框架的其他項目發生衝突,建議設置名稱並更改其 namespace,透過下面指令可以一次性的更改專案中的所有名稱:
php ayuco setname MyFirstPlugin
透過下方指令來安裝並更新框架依賴的相關套件:
composer update
開啟 WordPress 後台外掛安裝頁面,可以看到多了一個 [MY PLUGIN] 的插件。
點擊啟用插件後就完成安裝的步驟囉!
STEP3. 配置插件相關資料
插件的檔案架構如下:
[WORDPRESS ROOT]
|---> [wp-content]
|---> [plugins]
|---> "your-plugin-name"
|---> [boot]
|---> bootstrap.php
|---> [config]
|---> plugin.php
|---> [controllers]
|---> [css]
|---> [js]
|---> [plugin]
|---> [Models]
|---> Main.php
|---> [views]
|---> ayuco
|---> composer.json
|---> LICENSE
|---> plugin.php
|---> README
打開 plugin.php ,可以修改成你自己的資訊:
/* Plugin Name: MyFirstPlugin Plugin URI: Description: 這是我的第一個插件 Version: 1.0 Author: Shian Author URI: */
修改完可以刷新插件頁面,你就會發現這已經是屬於你的插件了!
STEP4. 新增選單與頁面
首先開起 “[你的插件]/plugin/Main.php",會看到有兩個 function,第一個是 init(),主要是在新增插件 public 的相關功能,也就是在前台可以使用該功能,function 中已經有提供ㄧ些範例程式,這篇文章暫時不會使用到這個 function,之後會在詳談。
/**
* Declares public HOOKS.
* - Can be removed if not used.
* @since 1.0
*/
public function init()
{
// i.e.
// add_action( 'save_post', [ &$this, 'save_post' ] );
//
// $this->add_action( 'save_post', 'PostController@save' );
//
// $this->add_shortcode( 'hello_world', 'view@shout', [ 'message' => 'Hello World!' ] );
}
第二個是 on_admin(),主要是在後台使用的相關功能,function 中一樣有提供ㄧ些範例的程式,這邊先示範如何添加選單,先在 function 中新增 wordpress 內建的 hook ‘admin_menu’。
/**
* Declares admin dashboard HOOKS.
* - Can be removed if not used.
* @since 1.0
*/
public function on_admin()
{
// i.e.
// add_action( 'admin_init', [ &$this, 'admin_init' ] );
//
// $this->add_action( 'admin_init', 'AdminController@init' );
add_action('admin_menu', [ &$this, 'admin_menu' ]);
}
剛剛已經新增一個 ‘admin_menu’ 的 action,這邊就要將這個功能進行實做,wordpress 一樣有提供新增選單的功能 add_menu_page(),只要依照你的需求填入相關參數,就可以新增選單在管理者介面中。
/**
* 後台選單設定
* @date 2018-04-09T10:07:30+0800
*/
public function admin_menu()
{
add_menu_page(
"頁面標題", // page_title (頁面標題)
"選單標題", // menu_title (選單標題)
'manage_categories', // capability (最低權限需求)
'firstplugin', // menu_slug (選單連結參數)
function(){ echo "Hello World!"; }, // function
'dashicons-format-aside' // icon_url (圖示)
);
}
效果如下:
