wordpress插件開發從建立一個新的菜單開始

建立插件的目的

1.咱們爲何要建立一個插件?php

  • IT界有一個知名的論調叫作不要造重複的輪子,若是有可能的話,你應該儘量的從現有的網絡資源上選擇一個已有的插件來使用,而不是從新創造一個。它耗費的精力極可能是沒有相應價值的。因此在建立一個插件以前,你應該先去wordpress的插件倉庫搜索關鍵詞,看一下是否是已經有了知足需求的插件。

2.你但願你的插件具備什麼功能?web

  • 在開始開發以前,想好這個問題,能幫你省去不少麻煩。好比,你的插件是提供給前臺頁面使用的仍是在後臺頁面使用的?是後臺的獨立模塊麼?它應該有哪幾個頁面,頁面上應該有哪些功能?怎麼去設計這個頁面的佈局?這些問題,都須要有一個清晰的規劃。

前置工做

儘管咱們在梳理開發流程中已經提到了如何建立一個插件,可是咱們仍是要再說一次,以防有些讀者沒有看到。redis

1.打開WordPress安裝目錄下的wp-content目錄。網絡

2.打開plugins目錄。svg

3.建立一個新目錄並在插件後命名(例如plugin-name)。wordpress

4.打開新插件的目錄。函數

5.建立一個新的PHP文件(例如,在插件後命名此文件也很好plugin-name.php)。佈局

開始開發

就像下面的示例同樣,你必須在你建立的主插件文件的開頭加上一段doc註釋來告訴wordpress這是個插件,固然也能夠加上做者,郵箱等信息,下面只是簡單示例,詳細能夠在咱們梳理流程的那邊博文/或者官網中看到。post

//wp-content/plugin-name/plugin-name.php
<?php
/** * Plugin Name: 插件名稱 */
function do_something_else()
{
    //.....你的代碼
}

還記得咱們在第一篇梳理中提到的三個基礎插件鉤子麼?this

1.register_activation_hook //啓用插件時觸發的鉤子

2.register_deactivation_hook//禁用插件時觸發的鉤子

3.register_uninstall_hook//刪除插件時觸發的鉤子

咱們能夠經過這三個鉤子函數來作一下一些前置/後置的處理,好比說插件被啓用時建立一個自定義數據表,初始化一些配置,禁用時恢復初始化設置,刪除時刪除自定義的數據表。

這裏咱們先不展開來說咱們在講OptionApi的時候再講這個。

準備工做都已經作好了,咱們如今開始正式的開發。咱們假設說咱們要作的是一個額外的內容管理插件。那咱們如今想要在後臺建立一個定製內容管理菜單,該怎麼作呢?

wordpress向咱們提供了一個add_menu_page的函數:

/** //咱們先看一下函數的參數 add_menu_page( string $page_title, //頁面標題 string $menu_title, //菜單名稱 string $capability, //權限級別 string $menu_slug, //菜單標識 惟一 callable $function = '', //回調函數 其實就是點擊這個菜單後觸發的函數 咱們能夠返回一個頁面 string $icon_url = '', //圖標,能夠爲空 int $position = null //位置 決定了菜單應該插入在第幾個 ); **/

那咱們應該怎麼使用呢?

for-example :

你的wp-content/plugin-name/plugin-name.php文件,看起來應該像這樣:

<?php
/* Plugin Name: 定製內容管理 Plugin URI: http://ergou.fun Description: 內容管理模塊(自定義內容非posts) Version: 1.0 Author: ergou Author URI: http://ergou.fun Copyright 2019 ergou (email : 531432012@qq.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */

/** 第1步:建立自定義菜單的函數**/
function ergou_cms_plugin_menu()
{
    add_menu_page('定製內容管理', '內容管理', 'manage_options', 'ergou-cms-manager', 'ergou_cms_plugin_options', '', 7);

}

/** 第2步:將函數註冊到鉤子中 */
add_action('admin_menu', 'ergou_cms_plugin_menu');

/** 第3步:定義選項被點擊時打開的頁面 */
function ergou_cms_plugin_options()
{
    if (!current_user_can('manage_options')) {
        wp_die(__('You do not have sufficient permissions to access this page.'));
    }
    //include_once(plugin_dir_path(__FILE__) . 'detail/index.php');

    //也能夠直接返回HTML,不過我建議是額外放一個文件,這樣之後維護起來好處理

    //你能夠直接 echo "hello world"
    echo "Hello World";
    wp_die();
}

咱們如今回到咱們的後臺管理頁面點擊插件管理你會發現多了一個,定製內容管理的菜單,點擊啓用。菜單就會增長在左側頂級菜單裏。點擊定製內容管理菜單,頁面輸出了"Hello World"。至此,咱們算是完成了第一步。

本篇內容就是這些。That’s all .Thank you .

相關文章
相關標籤/搜索