Howdy:使用现代PHP概念另辟蹊径高效率开发WordPress插件

作者 : King 本文共2709个字,预计阅读时间需要7分钟 发布时间: 2025-05-11 共4人阅读

Howdy:使用现代WordPress插件模板另辟蹊径

WordPress 是一个使用 PHP 构建的流行博客平台,其可扩展性是它最大的优势之一。只需将一个 PHP 文件放到 wp-content/plugins 目录中,就可以创建一个插件,但多年来,WordPress 插件的广泛开发实践并没有太大发展–即使知识兔 PHP 本身已经有了很大改进。

随着新功能和新语法的出现,PHP 也发生了很大变化。例如,它现在包含了更好、更合适的 OOP 功能和自动加载功能。然而,WordPress 仍然在推广旧的过程式编程方法,要在插件中加入自动加载功能并不简单。

这就是 Howdy 诞生的原因,这是一个 WordPress 插件模板,旨在让 WordPress 插件开发中使用现代 PHP 概念变得更容易。

范围

Howdy 专注于提高工作效率的基本工具,而不会使工作流程过于复杂。它并不强求所有现代 PHP 实践,而是优先考虑两个基础功能:

名称间距

PHP 中的名称间距将类、函数和常量组织成逻辑组,类似于文件夹的文件结构,以防止命名冲突。例如,两个定义了 Security 的插件如果知识兔各自使用唯一的命名空间,就不会发生冲突。

传统上,WordPress 依靠前缀来实现隔离。假设您的插件名为“Simple Security by Acme”。您通常会在函数和类的前缀中使用您的组织名称 Acme_acme_

// Prefix in a function name.function acme_check_security() {// Add security check logic here}// Prefix in a class name.class Acme_Security {public function check() {// Add class-specific logic here}}

虽然命名空间可以在 WordPress 插件中使用,但采用的情况仍然很少。这是因为如果知识兔没有自动加载,就无法充分发挥命名空间的潜力。

自动加载

在 WordPress 中自动加载类有两个主要限制。

首先,你不能自动加载第三方库(如 openai-php/client),而不为其命名空间添加前缀。如果知识兔两个插件加载相同的库,冲突的定义会导致网站崩溃。

此外,如果知识兔不使用 Composer,所有函数、常量或静态文件都必须使用 require_once 手动加载,从而增加了模板。

这就是 Howdy 要解决的两个主要问题。

一旦我们正确设置了这两项功能,采用其他高级 PHP 模式(如依赖注入Facades)就会变得容易得多。

让我们安装 Howdy,看看它的实际效果吧。

安装

我们可以使用 Composer 的 create-project 命令安装 Howdy:

composer create-project syntatis/howdy -s dev

该命令将创建一个新目录howdy,提取所有项目文件,并安装 Packagist 的依赖项。

如果知识兔想在其他文件夹中创建项目,知识兔可以在命令末尾添加目录名,如下所示:

composer create-project syntatis/howdy -s dev acme-plugin

然后知识兔,它会要求您输入插件别名 slug。插件别名是必填项,并且知识兔应该是唯一的。如果知识兔您计划在 WordPress.org 上发布您的插件,则插件 URL 中将使用此标签,例如https://wordpress.org/plugins/{slug}/ 。在本例中,我们将使用 acme-plugin

插件别名 slug

插件别名还将用于确定默认插件名称、命名空间前缀等。正如我们在下文中看到的,它可以很聪明地将 slug 转换为适当的格式。在本例中,我们将保留默认插件名称,同时将命名空间从AcmePlugin 更改为 Acme

将命名空间从AcmePlugin 更改为 Acme

输入完成后,会对项目文件进行必要的更新。例如,app/Plugin.php中的文件将包含名称空间和依赖项名称空间的前缀。

对项目文件进行必要的更新

包括哪些内容?

Howdy 预装了这些工具,以简化开发:

  • PHP-Scoper:它允许我们为使用 Composer 安装的依赖项添加前缀,以防止使用相同库时发生冲突。
  • PHPCS:它包含 PHPCS,但不使用 WordPress 编码标准,而是应用 PHP 生态系统中成熟的现代编码标准,如 PSR-12Doctrine 和 Slevomat
  • Kubrick:React.js 组件集,知识兔用于构建类似 WordPress 管理器中设置页面的应用程序。
  • @wordpress/scripts:用于编译 JavaScript 和样式表。你可以运行以下命令开始监视文件并自动编译更改: npm run start

目录结构

对于 WordPress 插件来说,Howdy使用的是一种略显非传统的结构。不过,如果知识兔你熟悉 LaravelSymfony 等框架,很快就能适应。

有三个主要目录

  1. app: 这个目录应该存放插件的核心类和业务逻辑。如果知识兔该目录下的类遵循 PSR-4 标准,则会自动加载。
  2. inc: 该目录包含配置文件、实用程序和 HTML 模板。
  3. src:该目录包含 JavaScript 和样式表文件的未编译源代码。

安装外部依赖

既然我们已经设置了插件模板,就可以使用 Composer 轻松安装其他软件包。例如,如果知识兔我们想构建一个集成 OpenAI 的插件,知识兔可以使用以下命令安装 openai-php/client 包:

composer require openai-php/client

安装后,Howdy 会自动为该软件包中所有类的命名空间添加前缀。

你还可以安装专门用于开发的软件包。例如,要安装 symfony/var-dumper,一个用于调试的流行 PHP 软件包,知识兔可以运行:

composer require symfony/var-dumper --dev

与 PHP 本地的 var_dump 函数相比,该软件包分享了更友好的调试体验。

更友好的调试体验

准备发布

最后,Howdy 分享了几条命令来准备发布插件:

npm run build:构建 src 目录中的所有资产文件,包括 JavaScript 和样式表。这些文件将经过优化和最小化,以用于生产。

composer run build:重新编译项目并删除为开发而安装的软件包。

composer run plugin:zip:为插件创建可安装的 ZIP 文件。在最终压缩包中,会排除一些不必要的文件,如 dotfiles、src 目录和 node_modules

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

小鱼网是一个美好的开源学习社区,学习编程,学习WordPress,下载WordPress插件主题,
小鱼网 » Howdy:使用现代PHP概念另辟蹊径高效率开发WordPress插件

常见问题FAQ

发表回复

分享最优质的学习资料

立即查看 了解详情