WordPress插件开发教程1
WordPress插件开发
基本概念
插件机制是由Hook系统实现。使用Hook,插件开发者可以在文档(HTML)被浏览器渲染之前对其进行修改,或者可以在某个事件发生时做一些事情。
大多数WordPress插件API都是由以下两大基本元素构成:
• Actions
• Filters
Actions:
事件驱动,特定事件发生时,比如:保存一篇Post,加载一个Admin Page或者向浏览器发送HTML;插件有能力Hook到这些事件中同时创建它们自己的事件。举个例子,一个插件可以在Post被保存的时候去Ping一台服务器,又或者一个插件可以在用户信息更新的时候自动更新该用户在社交网络上的信息。
Filters:
用于修改内容。被修改的内容可以是:一篇Post的文本,作者的名字,从数据库中获取的一个Option值等等。举个例子:一个插件可以使用第三方的头像去修改用户的头像。比如根据该用户的名字然后从Twitter上获取该名字用户的头像。
从上面的说明可以看出,Filters是数据处理的过程,有输入也有输出。而Actions是基于事件的机制,它不需要进行数据处理。
---------------------------------------------分割线-----------------------------------------------
Hook结构
调用Hook:
- add_action()
- add_filter()
移除Hook:
- remove_action()
- remove_filter()
以上参数最基本的使用方法,共四个参数:
- 第一个是Hook的名字,比如 save_post 或者 the_content;
- 第二个参数是你想要传给该Hook的callback,比如 insert_author_description或者add_google_analytics。通常情况下,第二个参数是由插件或者主题的 functions.lphp提供,当然也可以是Wordpress自带函数。
即:
add_action(‘pre_post_save’,‘function_name’);
如果使用面向对象编程:
add_action(‘pre_post_save’,array(‘class_name’,’method_name’));
此外,上述几个函数还有第三,第四参数。
- 第三个参数是优先级,该参数是一个整数,数值越小表示优先级越高,默认值为10.
- 第四个参数是一个数值,表示向callback传递的参数的个数。具体参考官方文档。
---------------------------------------------分割线-----------------------------------------------
下面,我们开始写一个自己的插件
- 1. 在wp-content/plugins/下面建一个文件夹,文件夹名称与插件名称相同。比如,我创建的插件名字是copyright-notices。
- 2. 进入copyright-notices文件夹,在其中创建文件copyright-notices.php
写好后,保存,我们就可以在wp-admin的Plugins中看到我们的插件了。
开发插件后台管理界面
开发插件的后台管理界面是必要的。这样插件的使用者就可以通过界面来修改插件的配置参数,而无需手动编辑插件的代码。对于插件的配置参数,最好把他们存放在数据库中,而不是硬编码于插件的php代码中。
幸运的是,Wordpress提供了大量的function和hook来帮助我们创建后台管理界面。下面结合实例来说明。
- Step1 创建后台界面
创建Copyright插件的第一步就是创建一个函数来产生HTML代码,用于在后台使用。
- Step2 在后台管理界面中添加插件配置入口
您可能不太清楚上面标题的含义,下面贴一张图片:
明白了吧?我要的就是在后台Plugins菜单项中可以看到我自定义的插件的名字。这样我点击该插件的Panel,就进入了上述的配置页面。
那么,这应该如何实现呢?
这里,要用到函数 add_submenu_page(),该函数需要6个参数:
• $parent 父页面的文件名,比如plugins.php
• $page_title 你要添加的页面名称
• $menu_title
• $access_level 访问权限
• $handle
• $callback 用于初始化页面的函数
(具体还是看官方文档)
下面,看如何编写代码:
其实,你不一定非要把插件入口创建在Plugins菜单下面。这没有硬性的规定。如果你想把入口创建在其他地方:
Add_management_page() |
在Tools下面创建 |
Add_options_page() |
在Settings下面创建 |
Add_theme_page() |
在Appearance下面创建 |
Add_users_page() |
在Users下面创建 |
Add_dashboard_page() |
在Dashboard下面创建 |
Add_posts_page() |
在Posts下面创建 |
Add_media_page() |
在Media下面创建 |
Add_links_page() |
在Links下面创建 |
Add_pages_page() |
在Page下面创建 |
Add_comments_page() |
在Comments下面创建 |
Add_page_menu() |
创建一个新的主菜单项,与Tools,Settings等平级 |
- Step3 给插件表单添加随机数项(为了安全性)
修改后的copyright_notices_admin如下所示:
- Step4 处理数据并与数据库交互
现在,我们需要把表单添加到数据库中了。为了实现该功能,我们首先要验证请求的合法性(即上一步中的随机数)。验证方法如下:
按照上述做法,在跨站请求伪造条件下(Cross Site Request Forgery),验证将失败,然后什么也不会发生。如果验证通过,就可以使用update_option()来修改值了。
现在,修改完成的copyright_notices_admin()函数如下所示:
下面,我们进入后台:
输入自定义的Copyright Text,然后提交:
OK,为了确定该数据已经存在了数据库中,我们进入数据库,查看options表:
可以看到,该数据已经写入了wp_options表中。
使用插件
- Step1 Createing Events with Actions
我们已经创建了Admin Panel并把copyright text存放到了数据库中。现在,我们可以在WordPress中使用我们的插件了。
首先,我们需要写一个函数来显示Copyright Text。
由于我们需要使用action hook来实现功能,故写如下代码:
add_action(‘wp_footer’,’display_copyright’);
然后,把主题中Home.php文件的 <?php get_footer() ?> 改为 <?php wp_footer() ?>
就可以看到结果了:
可以看到,最后面的 ruby97-csdn
- Step2 Modifying Content with Filters
所有Filter,就是过滤器。顾名思义,数据有进亦有出。看下面这个函数:
这样,如果是Home.php,即主页,将在所有显示的title后面加上copyright字符串,显示结果如下:
感谢您的阅读!
未完待续!
WordPress插件开发教程1相关推荐
- WordPress插件开发教程1:开发第一个WordPress插件
一.创建一个插件 第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin. 第二步:进入 my-first-plug ...
- WordPress 插件开发教程:插件加载顺序、创建插件、add_action与do_action
一.插件加载顺序 1.index.php 2.wp-blog-header.php 3.wp-load.php 4.wp-config.php 5.wp-settings.php 二.创建插件 1.插 ...
- 黄聪:《跟黄聪学WordPress插件开发》
续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...
- wordpress 通过域名无法访问_VPS主机和宝塔面板搭建WordPress网站教程
这是一篇Wordpress建站教程,记录了我在VPS主机上,通过使用宝塔面板,搭建Wordpress网站或个人博客的详细步骤,外贸新人或小白在建立网站的时候可以作为参考. WordPress是全球最流 ...
- WordPress 主题教程 #4b:Header 模板 2
Header 模板 2是从零开始创建 WordPress 主题教程系列教程的第四篇第二部分.最后说一次,开始之前务必先读下前面的日志.这篇会完成 Herder 模板,并且开始介绍 DIV Box 模型 ...
- WordPress 主题教程 #2:模板文件和模板
模板文件(template files)和模板(template)是从零开始创建 WordPress 主题系列教程的第二篇.开始之前,你要确保你已经看过WordPress 主题教程 #1:介绍,否则你 ...
- coreos 搭建PHP,Linux_用Mac在CoreOS上搭建WordPress的教程,作者以自己的Mac笔记本为例, - phpStudy...
用Mac在CoreOS上搭建WordPress的教程 作者以自己的Mac笔记本为例,介绍了如何在CoreOS上安装WordPress应用,没有过多的理论解释,全部是实战类教程,推荐想快速了解CoreO ...
- jquery toggle_响应式WordPress主题教程–第6部分– jQuery Toggle菜单
jquery toggle 视频教程详细信息 名称 响应式WordPress主题教程–第6部分– jQuery Toggle菜单 描述 我们将继续在导航菜单上进行操作. 在这一部分中,我们写了一口jQ ...
- [原创插件] [服务端插件] [新手开发者必看]优秀插件开发教程列表 欢迎回复讨论
插件开发者专享套餐 声明:此集锦意在提升插件开发者的姿势水平, 插件版版主邀请编程版的海螺编写的,并非错版,请勿举报. 入门以前 在开始写插件之前,你需要知道插件基于 Java,所以请先学习 Java ...
最新文章
- SQL中object_id函数的用法
- ubuntu install redis/mongo
- 单选按钮步骤流程向导 js_创建令人愉快的按钮的6个步骤
- Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
- script标签中的crossorigin属性
- TensorFlow 辨异 —— tf.add(a, b) 与 a+b(tf.assign 与 =)、tf.nn.bias_add 与 tf.add
- NodeMCU ESP8266+Arduino:将宿舍老式门锁改造为简易密码锁
- 媒体查询、移动端、网页响应式布局
- 用python计算个人所得税计算器_教你使用Python实现新个税计算器
- 弘辽科技:拼多多改销量是什么意思?
- python循环:打印小星星
- R 语言赋值运算符:`-` , `=`, `-`
- 第八届蓝桥杯JavaB组省赛真题
- Socket编程入门C++
- 白日梦想家(The Secret Life of Walter Mitty)观后
- matlab cell 颜色,MATLAB 的 cell 大法(单元格数组)
- 资产组合优化原理与实例 Portfolio Optimization
- 红米k30鸿蒙系统,红米k30pro用的是北斗导航芯片吗?
- STM32驱动压电式蜂鸣器发出和弦音原理图加程序
- 微信小程序调用腾讯地图选点