# 如何“抄”一个 WordPress 插件

- Link: https://www.ixiqin.com/2022/02/27/how-to-learn-from-wordpress-plugin/
- Published: 2022-02-27T06:00:00+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2022/02/27/how-to-learn-from-wordpress-plugin/#)

 * [如何理解 WordPress 的插件开发？](https://www.ixiqin.com/2022/02/27/how-to-learn-from-wordpress-plugin/#%e5%a6%82%e4%bd%95%e7%90%86%e8%a7%a3_wordpress_%e7%9a%84%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91%ef%bc%9f)
 * [Tips](https://www.ixiqin.com/2022/02/27/how-to-learn-from-wordpress-plugin/#tips)

WordPress 作为 CMS 生态的第一产品，PHP 生态的护城河，可以说，只要 WordPress 不死，
PHP 就还能继续活下去。而 WordPress 团队也在不断迭代项目。因此，有不少的开发者以 
WordPress 开发为生。

而得益于 WordPress 基于 GPL 开发的，所以，理论上，如果你开发的插件是通过 WordPress
官方的目录分发的，你的插件是需要以 GPL 兼容的协议开源的，这也给了想要开发同款插件
的开发者们提供了机会。

> PHP in WordPress themes must be GPL, artwork and CSS may be but are not required.
> Matt Mullenweg, https://wordpress.org/news/2009/07/themes-are-gpl-too/

不过，需要注意的是，只有 PHP 的插件源码才需要以 GPL 兼容协议开源，CSS 和图片文件
不需要开源，而随着 Gutenberg 编辑器的不断推广，以后的插件可能不太好“抄”了。

在这篇文章，我们不再讨论 Gutenberg 功能的研究，只谈插件的 PHP 部分。

## 如何理解 WordPress 的插件开发？

在 [《人人都能学会的 WordPress 课程》](https://www.easywpbook.com/plugin/run.html)
当中，我曾经介绍过 WordPress 的插件的运行机制。如果现在用一个更加简单的说法来探讨
这个问题的话，**WordPress 是通过提供`do_action`和`apply_filter`这两个方法，实现了
功能的可修改性。而插件则需要 `add_action` 和 `add_filter` 这个方法来影响 WordPress
的运行表现**。

![](https://files.ixiqin.com/2022/02/23195527/75b49d4621ffc8bf01cedf88d0855a01-1004x1024.
png)

当你明白这个问题之后，你就会意识到，**如果我们需要解析一个插件的运行机制，来开发
自己的同类型插件之时，唯一要做的其实就是找到对应的 Action 和 Filter，修改 WordPress
的运行表现。**

因此，你接下来要做的事情就变得简单很多，你需要做的，仅仅是在插件的代码中搜索所有
的 `add_action` 和 `add_filter`，并记录下对应的 action 和 filter 的名字，在 Code
Reference 当中搜索对应的 action 的应用场景和用法即可。

## Tips

 1. 按照 WordPress 的开发规范，插件的目录中一定有一个和其目录名相同的 PHP 文件，这个
    文件是 WordPress 插件的入口文件，你只需要从这个插件看起，就能找到你想要了解的实现
    方式。
 2. WordPress 插件的代码都可以在 WordPress Directory 中找到，你只需要在 Development
    目录中，就可以找到对应的插件的源码。

![](https://files.ixiqin.com/2022/02/23195527/d2b5ca33bd970f64a6301fa75ae2eb22-32-
1024x514.png)
