WordPress插件开发,从入门到精通。

16,012次阅读
没有评论

共计 1159 个字符,预计需要花费 3 分钟才能阅读完成。

WordPress 主题开发:https://nicen.cn/1244.html

WordPress 插件开发手册:https://developer.wordpress.org/plugins/

开始

1. 说明

每次 WordPress 网页请求,都会依次执行各种插件的主文件(PluginName.php), 然后才会执行主题的 function.php 文件。执行时注册的各种钩子,将会在指定事件发生时触发执行。

WordPress 钩子可以让我们在特定的时机介入 WordPress 的代码执行流程,不需要编辑任何核心文件就可以改变 WordPress 的行为。

WordPress 中有两种类型的钩子,Action 和 Filter,Action 可以让我们添加或修改 WordPress 功能,而 Filter 可以让我们修改用户提交的或展示给用户的内容。

除了在 WordPress 插件中使用,钩子也被广泛应用于 WordPress 核心的许多功能中,一些钩子只是在 WordPress 埋下了一些占位符,以便我们开发的时候使用,这就是 WordPress 如此灵活的原因。

2. 关键点

只有被激活的插件,才会在每次网页请求时被调用执行。

3. 插件相关的钩子

创建插件时需要的 3 个基础钩子是  register_activation_hook()register_deactivation_hook()  和 register_uninstall_hook()

  1. register_activation_hook 我们激活插件时会运行,我们可以使用这个钩子挂载一个函数来设置我们的插件,例如在数据表中添加一些默认设置。
  2. register_deactivation_hook 在我们禁用插件时运行,我们可以挂载一个清理插件数据的函数来清理一些临时数据。
  3. register_uninstall_hook 在我们卸载插件时运行,我们可以挂载一个清理插件所有数据的函数来清理数据库中不再需要的插件数据。
  4. plugin_name/uninstall.php,在插件被卸载时调用执行。
  5. plugin_loaded,插件加载完毕时触发。

4. 添加、移除、执行钩子

  1. 可以使用 add_action()、add_filter 函数来添加我们自己的钩子,通过我们自己的自定义钩子,其他开发者可以通过扩展或修改我们的插件来适应他们的需求。
  2. 可以使用  remove_action()、remove_filter 来移除挂载到某个钩子上的函数,remove_action() 需要在初始的 add_action() 之后运行。
  3. 可以使用 do_action、apply_filter 运行指定钩子上的所有钩子函数;

制作插件

1. 定义插件

在 Plugins 目录下,创建一个目录,目录里面放一个同名的 PHP 文件,通过注释添加如下描述:

一个简单的插件就算完成了,可直接按照上方模板定义自己的插件。

2. 加载顺序

经过实际测试,插件先于主题加载,主题在插件加载完毕后开始加载。

插件相关函数

1. 基础函数

  • plugin_dir_url(__FILE__),获取插件所在目录的 URL
  • plugin_dir_path(__FILE__),获取插件所在目录路径。

问题总结

1. 插件安装

插件安装时代码运行的上下文是在一个函数里

WordPress 插件开发,从入门到精通。

代码报错信息

由此得知,插件内的代码不能简单的认为在全局作用域;

插件安装时,会完整的运行插件所有的代码,register_activation_hook 钩子只会在安装是触发

WP-CLI

官方文档:https://developer.wordpress.org/cli/commands/

1. 安装

# 安装下载 wp-cli
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-10发表,共计1159字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)