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、插件名称
(1)名称唯一,不要和其他插件同名。
(2)使用前缀和其他插件区别。
(3)插件名称最好能描述其功能。
2、创建插件
(1)/wp-content/plugins/文件夹
(2)创建插件目录: lt-copyright 文件夹
(3)创建主文件:在lt-copyright 文件夹中创建 lt-copyright.php,编码为UTF-8 没有签名。入口文件要和目录名相同。
(4)主文件标准插件信息头
<?php
/*
Plugin Name: 插件名称
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: 插件的简单描述
Version: 插件版本号, 例如: 1.0
Author: 插件作者
Author URI: http://URI_Of_The_Plugin_Author作者地址
*/
?>
参考地址:https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E4%B8%80%E4%B8%AA%E6%8F%92%E4%BB%B6
(5)启用函数:网站后台启用插件时,运行
// 启用函数:插件启用是运行
function lt_copyright_install(){//往wordpress设置表(options)里添加 option_nama= lt_copyright_text, option_value=<p></p>update_option("lt_copyright_text","<p style='color:red;'>本站点所有文章均为原创,转载请注明出处!</p>");
}
// 注册启用的钩子
register_activation_hook( __FILE__, 'lt_copyright_install' );
(6)禁用函数:网站后台禁用插件时,运行
// 注册停用的钩子
register_deactivation_hook( __FILE__, 'lt_copyright_uninstall' );
// 停用函数
function lt_copyright_uninstall(){//往wordpress设置表(options)里添加 option_nama= lt_copyright_deactivate, option_value=yesupdate_option("lt_copyright_deactivate","yes");
}
(7)删除插件
/wp-content/plugins/lt-copyright 下创建 uninstall.php 文件
<?
//如果uninstall 不是从 wordpress 调用,则退出
if( !defined( 'WP_UNINSTALL_PLUGIN' ) ) exit();//删除插件在option表 中 option_nama= lt_copyright_text 的记录//删除插件在option表 中 option_nama= lt_copyright_deactivate 的记录delete_option('lt_copyright_text');delete_option('lt_copyright_deactivate');
?>
注意:会删除 /wp-content/plugins 文件夹下的插件和数据库 options表中数据
(8)完整代码
lt-copyright.php
<?php
/*
Plugin Name: lt-copyright
Plugin URI: http://www.jxzrj.com
Description: 在页脚显示一段版权信息
Version: 1.0
Author: lt
Author URI: http://jxzrj.com
*/// 启用函数:插件启用是运行
function lt_copyright_install(){//往wordpress设置表(options)里添加 option_nama= lt_copyright_text, option_value=<p></p>update_option("lt_copyright_text","<p style='color:red;'>本站点所有文章均为原创,转载请注明出处!</p>");
}
// 注册启用的钩子
register_activation_hook( __FILE__, 'lt_copyright_install' );// 注册停用的钩子
register_deactivation_hook( __FILE__, 'lt_copyright_uninstall' );
// 停用函数
function lt_copyright_uninstall(){//往wordpress设置表(options)里添加 option_nama= lt_copyright_deactivate, option_value=yesupdate_option("lt_copyright_deactivate","yes");
}?>
uninstall.php
<?
//如果uninstall 不是从 wordpress 调用,则退出
if( !defined( 'WP_UNINSTALL_PLUGIN' ) ) exit();//删除插件在option表 中 option_nama= lt_copyright_text 的记录//删除插件在option表 中 option_nama= lt_copyright_deactivate 的记录delete_option('lt_copyright_text');delete_option('lt_copyright_deactivate');
?>
三、add_action与do_action
网站底部添加:
1、页面调用 wp_footer() 函数
2、wp_footer() 函数在 /wp-includes/general-template.php
3、/wp-content/plugins/lt-copyright/lt-copyright.php
//将 lt_copyright_insert 挂载到 wp_footer 动作钩子
add_action("wp_footer","lt_copyright_insert");
function lt_copyright_insert(){//获取 options 表中 option_nama= lt_copyright_text 记录, option_value的值,并输出echo get_option("lt_copyright_text");
}
WordPress 插件开发教程:插件加载顺序、创建插件、add_action与do_action相关推荐
- 单步调试学习WordPress PHP文件的加载顺序
index.php作为入口,加载的调用栈如下图所示: 加载后在console里打印的加载日志: [Wed Jul 17 11:39:59 2019] 127.0.0.1:56156 [404]: /? ...
- nuxt项目:css相关插件加载顺序问题【extract-css-chunks-webpack-plugin】
一.warning信息 chunk pages/channelManagement/qualification/create/pages/channelManagement/qualification ...
- X64dbg-插件基本原理-加载顺序-概述-主目录
文章目录 1.概述 2.为什么要写插件? 3.了解 x64dbg 插件架构 4.插件加载顺序 5.主目录 1.概述 x64dbg 插件软件开发工具包 (SDK) 用于为 x64dbg 调试器创建插 ...
- WordPress插件开发教程1:开发第一个WordPress插件
一.创建一个插件 第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin. 第二步:进入 my-first-plug ...
- 【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】
[Youtobe trydjango]Django2.2教程和React实战系列八[渲染数据库数据与模板加载顺序探究] 1. 准备数据 2. 渲染数据库数据到模板 3. 如何在app里加载django ...
- 情迁红包配合情迁QQ机器人新版作为插件加载的使用教程
初次体验 如果你第一次打开本文章,我想对你说的是,这文章可能只供参考因为有些设置又了很大的改动,以及方式也不一样了. 插件开发具体还请参考 手机端编写LUA脚本插件https://www.jiansh ...
- HTML基础和JSP了解及JSP中代码加载顺序
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- 我的世界Bukkit服务器插件开发教程(一)第一个插件
一.第一个插件 这一章节,我们会开发第一个属于自己的插件 在这之前,我们还需了解plugin.yml和config.yml,并大概了解插件的原理 plugin.yml 这个文件必须存在,否则读不出来. ...
- Ckeditor 的加载顺序
我们的只用在文件里面引用一个CKEditor的js文件--CKEditor目录下的ckeditor.js文件, 该文件会完成后续的所有的CKEidtor依赖的js文件的加载. 所依赖的js文件加载顺序 ...
最新文章
- 用C++开发Web应用
- Why am I getting this error “Expected resource of type raw” in Android Studio?
- LR(1)分析表-语法树-四元式
- UVa10006-Carmichael Numbers
- 云小课 | 不小心删除了数据库,除了跑路还能咋办?
- 单片机sleep函数的头文件_关于PIC单片机SLEEP指令
- layer在html中的data写法,layerdate.html
- python cpk计算器_CPK公式
- 扩展欧几里得算法——java
- cissp认证考试指南_如何通过CISSP考试(信息安全认证)
- Clonezilla
- PhotoShop 安装PS时提示安装程序检测到计算机重新启动操作可能处于挂起状态,建议您退出安装...
- 袋鼠云技术荟 | 某客户生产服务器CPU负载异常处理
- 2021天津高考高中成绩查询系统,2021天津地区高考成绩排名查询,天津高考各高中成绩喜报榜单...
- 高速公路计算机知识,高速公路基本知识120问
- 神州泰岳的服务流程业务方向
- 油猴脚本改善浏览器字体显示效果(自用)
- 第十六章 Unity的表面着色器探秘(2)
- 京东印尼站(JD.ID)绑定连连跨境支付收款教程!
- 关于建造的逻辑: BIM和VDC
热门文章
- city-picker的使用
- 自动化运维saltstack(资源)
- mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...
- 【软件测试】软件测试的定义、软件测试的目的
- linux 切换网络 命令,Linux 的常用网络命令
- SpringBoot详解
- java:浅谈axis调用webservice接口
- PowerBuilder 11.x .NET开发视频教程
- 学好编程之GOC语言快速入门(1)
- tensorflow预定义经典卷积神经网络和数据集tf.keras.applications