wonderwp/wonderwp

WonderWP 框架。一个将现代和工业级开发能力带给 WordPress 的框架


README

这是一个 WordPress 框架,其目标是赋予 WordPress 工业级开发能力

SensioLabsInsight

适用于谁?

可能不是每个人。

如果您

  • 愿意采用工业化和现代化的开发流程。
  • 面临的项目既适合 CMS,又包含严重的代码挑战。
  • 您有工业级开发需求,例如高产量、可重复的解决方案、内部生产团队。
  • 您正在考虑利用以前的项目来构建可重用的插件和主题。使用 wonderwp 产生的插件和主题旨在是完整的对象、一致的、可预测的、可组合的、可测试的和持久的。
  • 您习惯于使用框架,而不是 CMS

wonderwp 为 WordPress 增加了什么?

概述

  • Composer 能力/自动加载
  • 命名空间
  • 依赖注入容器
  • 将程序性概念转换为面向对象接口、PSRs 和实现,例如
    • 路由
    • 缓存
    • 表单
    • HTTP 基础
    • 日志记录
    • 电子邮件
    • 媒体
    • 通知
    • 帖子面板
    • 搜索引擎
  • 服务,即可与之交互的类
    • 激活/停用
    • 路由
    • 资产管理
    • Ajax 端点
    • 短代码
    • WP-CLI 命令
  • MVC 机制
  • 插件蓝图(文件夹组织、命名约定、完整对象方法、空的 function.php 文件)

更深入一点

Composer

我们想确保基于 WonderWp 的工作能够很好地与 composer 一起使用。因此,此框架在此处: https://packagist.org.cn/packages/wonderwp/wonderwp

您可以这样安装

composer require wonderwp/wonderwp

对于基于 composer 的 WordPress 架构,我们推荐 https://roots.io/bedrock/

Composer 还包含一个自动加载器,以避免在插件中的每个地方都需要引入文件。框架鼓励您遵循 PSR4 建议,并使用自动加载器。

依赖注入/接口和服务

我们希望我们的代码尽可能模块化,并将依赖注入能力带给 WordPress。

当使用依赖注入容器时,您可以切换到容器中请求的键背后的对象,只要它实现了给定的接口。因为如果实现了,您将确信该对象公开了您的代码正常运行所需的所有公共方法。

这就是为什么我们除了添加 DI 容器外,还添加了许多用于处理 WordPress 核心概念和更广泛编程概念的接口(电子邮件、路由、日志记录、缓存)...

服务

为了遵循良好的面向对象原则,我们鼓励开发者在通过使用此框架时采用一些概念。

  • 完整的对象插件,没有程序性代码
  • 每个任务类型一个对象,即服务,其目的是只有一个责任。这适用于钩子管理、短代码管理、资产管理、路由管理等。

MVC

遵循完整对象哲学,短代码或自定义路由导致公共或管理员输出的管理由控制器处理。控制器通过与服务协同工作来获取所需数据,并将其传递给视图。目前,视图默认不依赖于此框架的模板引擎,但您可以轻松地添加自己的。

插件蓝图

此框架提出了一种按照PSR4推荐组织类文件夹的方式,一个用于插件管理端的admin文件夹,一个用于插件公共端的public文件夹,但这些都是非强制性的,您可以按自己的意愿操作。

此外,还有一个插件生成器,可以帮助您快速开始插件开发。

文档

您可以在文档文件夹中找到更多详细的文档。

测试

启动测试的命令

vendor/bin/phpunit tests/suites --bootstrap tests/bootstrap.php --coverage-html tests/reports/coverage.html --whitelist src/WonderWp/Framework --log-junit tests/reports/phunit.xml

贡献

  • 您可以通过Fork此存储库并提交Pull Requests来为此项目做出贡献
  • 我们正在寻找单元测试的贡献者

更新日志

您可以在changelog.md下找到更新日志