blacktrs/modern-wp

基于 Symfony 的 WordPress 模板,拥有现代开发工具、更简单的配置和改进的文件夹结构

1.1.0 2023-08-26 13:42 UTC

This package is auto-updated.

Last update: 2024-09-26 16:02:53 UTC


README

ModernWP 是一个增强的 WordPress 模板,基于纯 Symfony 框架Roots Bedrock

ModernWP 是为需要更好结构和工具的基于 WordPress 的项目而创建的。您几乎可以同时使用 Symfony 和 WordPress 的所有功能。

此模板可用于将大型代码库从经典的重量级 WordPress 风格项目迁移到现代方法,而不会导致重大的向后兼容性损失。

特性

  • 由 Symfony 驱动的结构项目
  • 更简单的配置
  • 从基于现代框架的解决方案中获取所有好处
  • 内置 Roots Bedrock

要求

  • PHP >= 8.1
  • MySQL/MariaDB(由于 WordPress 依赖项)

安装

  • composer create-project blacktrs/modern-wp ./project
  • cd ./project
  • composer install
  • yarn install
  • .env 中配置 DATABASE_URL
  • 配置其他需要的 env 变量或 yaml 配置

Docker

  • docker-compose.dist.yml 复制到 docker-compose.yml
  • 如有需要,编辑 docker-compose.yml
  • 运行 docker-compose up -d --build

可能的 Docker 问题

  • 如果在 bin/console cache:clear 后导致 HTTP 错误 500,请删除 var 目录并使用 chmod 0777 重新创建它

本地环境

  • 打开 https://

自定义主机名

  • docker-compose.yml 中将 NGINX_HOST 替换为您的主机名
  • 将条目 127.0.0.1 your_host.local 添加到 /etc/hosts

本地 HTTPS

  • 安装 mkcert
  • 运行 mkcert -install

默认情况下,https 对 localhost 有效

如果需要为自定义主机名生成特定的 SSL 证书,请运行以下命令

mkcert \
  -cert-file docker/cert/main.crt \
  -key-file docker/cert/main.key \
  your-host.local
  • your_host.local 替换为您希望的主机名
  • 更新 docker-compose.yml

文档

配置

默认情况下,配置应考虑在 confing/**.yaml 文件中。

所有配置参数将以 SCREAMING_SNAKE_CASE 的形式转换成 php const,以便 WordPress 可以将其作为配置常量读取。

例如,以下参数将被转换成 PHP 常量 WP_DEBUG,其值为 true。更多示例可以在 config/packages/app.yaml 中找到

parameters:
  WP_DEBUG: true

控制器类型

您可以使用两种类型的控制器

  • Rest API
  • 模板页面

Rest API 控制器

  • 每个 Rest API 控制器都可通过地址 https://your-site.com/api/controller/path 获取
  • /config/packages/app.yml 中的参数 app.apiPrefix 可以更改 api 前缀

基本上,任何非模板控制器都将被解释为 Rest API 控制器。示例可以在 src/Controller/Rest 目录中找到

模板控制器

  • 每个模板控制器都指向 WordPress 页面地址。
  • 要声明模板控制器,Route() 属性的 path 参数应包含特定的模板名称

例如,如果需要任何类型页面(如文章类型页面)的控制器,则声明的路由将如下所示

#[Route(path: 'page.php', name: 'some_page')]
public function page(): Response
{
    return new Response('my page');
}

可以为任何 WordPress 模板声明路由

更多示例可以在 src/Controller/Frontend 目录中找到

有关控制器的更多文档,请参阅symfony 文档

模板化

默认情况下,模板应该是 twig 格式,并存储在 templates 目录中。更多详情请参阅symfony 文档

钩子

建议在 Kernel::registerHooks() 方法中添加 WordPress 动作和过滤器的新的处理器声明

还建议为每个钩子使用单独的可调用服务类作为处理器。为了防止 Kernel 类膨胀,最好将钩子声明作为组存储在不同的类中。

插件

可以从 WordPress 管理仪表板或作为Composer 包添加插件

与数据库交互

为了方便地与数据库交互,建议使用Doctrine ORM

src/Entity 中生成默认 WP 表的实体集合。

模板扩展

要实现更深入的配置,请编辑以下文件

  • config/bootstrap.php - 引导配置
  • public/app/mu-plugins/register-application-config.php - 模板 WordPress 加载器
  • public/app/themes/site-default/*- 默认 WP 主题

前端资源

建议使用 Symfony EncoreSymfony Asset 绑带来构建和使用前端资源。

编译后的资源最好存储在 public 目录中(例如 public/build

链接