创建插件的目的

1.我们为什么要创建一个插件?

  • IT界有一个知名的论调叫做不要造重复的轮子,如果有可能的话,你应该尽可能的从现有的网络资源上选择一个已有的插件来使用,而不是重新创造一个。它耗费的精力很可能是没有相应价值的。所以在创建一个插件之前,你应该先去wordpress的插件仓库搜索关键词,看一下是不是已经有了满足需求的插件。

2.你希望你的插件具有什么功能?

  • 在开始开发之前,想好这个问题,能帮你省去很多麻烦。比如,你的插件是提供给前台页面使用的还是在后台页面使用的?是后台的独立模块么?它应该有哪几个页面,页面上应该有哪些功能?怎么去设计这个页面的布局?这些问题,都需要有一个清晰的规划。

前置工作

尽管我们在梳理开发流程中已经提到了如何创建一个插件,但是我们还是要再说一次,以防有些读者没有看到。

1.打开WordPress安装目录下的wp-content目录。

2.打开plugins目录。

3.创建一个新目录并在插件后命名(例如plugin-name)。

4.打开新插件的目录。

5.创建一个新的PHP文件(例如,在插件后命名此文件也很好plugin-name.php)。

开始开发

就像下面的示例一样,你必须在你创建的主插件文件的开头加上一段doc注释来告诉wordpress这是个插件,当然也可以加上作者,邮箱等信息,下面只是简单示例,详细可以在我们梳理流程的那边博文/或者官网中看到。

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

还记得我们在第一篇梳理中提到的三个基础插件钩子么?

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.funDescription: 内容管理模块(自定义内容非posts)Version: 1.0Author: ergouAuthor URI: http://ergou.funCopyright 2019  ergou  (email : 531432012@qq.com)This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, 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 .

wordpress插件开发从创建一个新的菜单开始相关推荐

  1. php创建wordpress主题,WordPress主题开发之:如何为主题创建一个新的页面模板

    在使用Wordpress的时候你会看到有的主题在新建页面的时候会有很多页面模板可以选择.本篇文章教你如何在一个WordPress主题里创建一个新的页面模板. 在使用Wordpress的时候你会看到有的 ...

  2. 创建一个新的extender

    写在前面的话: 本人在前一段的ASP.NET AJAX的学习中,本想使用一个<ajaxToolkit:ValidatorCalloutExtender >,但是折腾了几天,发现不能够使用, ...

  3. 怎样为计算机创建一个新的用户名,如何创建电脑用户名 电脑用户名是什么怎么修改...

    如何创建电脑用户名 电脑用户名是什么怎么修改 怎么创建电脑用户名,电脑用户名是什么怎么改 公用电脑上,最好给每个人都创建一个自己的用户,系统默认的用户是Administrator,我们还可以创建其他用 ...

  4. Illustrator教程之 在 Ai 2022中创建一个新文档

    欢迎观看Illustrator教程,小编带大家学习 Illustrator 的基本工具和使用技巧,了解如何在 Ai 2022中制作新文档. 在Illustrator中有很多方法可以开始一个新项目.可以 ...

  5. 01_创建一个新的activityactivity配置清单文件

    今天开始学四大组件.今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者.四大组件,咱们一天一个.Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面.创建多个 ...

  6. python生成一个窗口_PyQt5创建一个新窗口的实例

    更多python教程请到友情连接: 菜鸟教程www.piaodoo.com 人人影视www.sfkyty.com 飞卢小说网www.591319.com 韩剧网www.op-kg.com 兴化论坛ww ...

  7. docker commit (从容器创建一个新的镜像)

    从容器创建一个新的镜像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -a :提交的镜像作者:-c :使用Dockerfile指令来创建镜像 ...

  8. 如何在Java中创建一个新的List

    本文翻译自:How to make a new List in Java We create a Set as: 我们创建一个Set为: Set myset = new HashSet() How d ...

  9. 关卡设计快速入门_3. 创建一个新关卡

    接下来,创建一个新关卡,来构建您的游戏环境.当创建一个新关卡时,就和您创建一个新项目类似.虚幻引擎允许您选择 模板 .默认情况下,有一个 默认 模板(它具有非常简单的场景) 和一个 Empty Lev ...

最新文章

  1. 语言生日创意代码_你生日那天的宇宙什么样子知道?我全部给你吧!
  2. element-ui如何进行调试
  3. python相同怎么写_这两个index相同的dataframe我想把他们merge,怎么写?
  4. 简易 责任链的两种实现方式
  5. 【python基础知识】-引入文件失败问题(同一文件夹和不同文件夹)
  6. psql物化视图自动更新
  7. 修改csdn中字体颜色
  8. 《矩阵分析》代码Ⅱ——gauss消元法,列主元素法,总体主元素法matlab实现
  9. Downloading Quest SQL Optimizer for Oracle
  10. Mybatis3.5.4官网下载
  11. oceanbase ODC和Obclient连接mysql类型的ob库
  12. EPSON爱普生系列打印机清洗更换墨盒方法
  13. 台式计算机显卡驱动位置,惠普台式电脑怎么安装显卡驱动
  14. Hopfield神经网络的联想记忆——数字识别的一些笔记
  15. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里
  16. Unity 卡通渲染 part-1
  17. 绿色软件联盟:杀毒软件已经进入空前弱智与混沌状态
  18. TCP三次握手四次挥手(三国版)
  19. [Python从零到壹] 四十.图像处理基础篇之图像量化处理
  20. likely()与unlikely()函数的作用

热门文章

  1. 如何使用Scihub Eva对Scihub进行批量下载?
  2. 小案例:利用Python获取Windows电脑WiFi密码
  3. 计算机全真模拟试题五,2015年计算机二级《MSOffice》全真模拟试题(5)
  4. 教师培训效果调查研究
  5. Network | 高颜值网络可视化工具(一)
  6. 视频教程-ZStack 带你0基础搭建私有云平台|ZCCT实战培训视频|-云平台
  7. WiFi安全(一):WEP
  8. 《聊聊热点》第二篇:码农界的春联真扎心
  9. Photoshop设计元旦海报
  10. 利用Python的turtle画一个奥运五环