cloak-labs / cloakwp-bedrock
为CloakWP项目提供的无头WordPress样板,具有现代开发工具、易于配置和改进的WP文件夹结构。
Requires
- php: >=8.0
- cloak-labs/cloakwp-base-theme: ^1.0.0
- cloak-labs/cloakwp-inception-theme: ^0.0.2
- cloak-labs/cloakwp-plugin: ^1.0.1
- composer/installers: ^1.0 || ^2.2
- johnbillion/extended-cpts: ^5.0
- oscarotero/env: ^2.1
- roots/bedrock-autoloader: ^1.0
- roots/bedrock-disallow-indexing: ^2.0
- roots/wordpress: ^6.0.3
- roots/wp-config: 1.0.0
- roots/wp-password-bcrypt: 1.1.0
- vinkla/extended-acf: ^13.4
- vlucas/phpdotenv: ^5.5
- wpackagist-plugin/acf-content-analysis-for-yoast-seo: ^3.0.1
- wpackagist-plugin/advanced-custom-fields: ^6.0
- wpackagist-plugin/duplicate-post: ^4.5
- wpackagist-plugin/jwt-authentication-for-wp-rest-api: ^1.3.2
- wpackagist-plugin/post-2-post-for-acf: ^1.7.0
- wpackagist-plugin/wordpress-seo: ^20.2
- wpackagist-theme/twentytwentythree: ^1.0
Requires (Dev)
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7.1
README
这是CloakWP(无头WordPress)项目的官方WordPress样板。这是一种有见地的、现代的WordPress开发方法。然而,它不是CloakWP堆栈的必需品——您可以选择退出并使用自己首选的WordPress开发堆栈,同时仍然利用其他CloakWP工具。
这种有见地的启动器利用了许多现代WordPress开发工具
- Bedrock - 一个流行的WordPress样板,具有Composer、易于配置和改进的文件夹结构,使得
- 每个环境的独立配置
- 环境变量
- 自定义wp-content目录
- Composer(PHP依赖管理器)用于管理WordPress核心、插件和主题的安装——通过Git实现更好的版本控制
- mu-plugins自动加载器
- 增强的WordPress安全性(文件夹结构限制了对非公共文件的访问,并通过wp-password-bcrypt提供更安全的密码)
- 将WordPress 80%转变为合适的Twelve-Factor App
- Spinup Local WP - CloakWP团队另一个NPM包,作为Docker + Docker Compose的简单抽象层,使您在开发过程中无需任何努力即可快速在本地启动WordPress网站。它包括以下内容
- PHP 8.2,
- Nginx服务器,
- MariaDB(流行的MySQL分支),
- WP-CLI - WordPress的命令行界面,
- PhpMyAdmin - MySQL和MariaDB的开源管理工具
- MailHog - 开发者电子邮件测试工具——配置您的出站SMTP服务器并在Web UI中查看您的出站电子邮件。
- 预安装了一些有见地的WordPress插件,以增强/改进无头WordPress体验,显然包括CloakWP插件和主题,以及一个生产就绪的子主题,其中包含与CPT、分类法、ACF块和ACF字段组注册/配置相关的各种好东西,以最佳实践的方式学习您会喜欢的。
要求
- Composer
- PHP >= 8.0
- Docker + Docker Compose + Docker Desktop
- PNPM
- Node.js
安装
进入您希望安装的目录并运行
composer create-project cloak-labs/cloakwp-bedrock
然后运行
cd cloakwp-bedrock
然后
npm install
... 这将安装 Spinup Local WP。
可选地运行以下命令以将您的插件/主题更新到最新版本
npm run composer update
配置
环境变量
上面的Composer安装命令将自动将`.env.example`文件复制到`.env`文件,您现在可以编辑该文件。- 请确保为每个项目修改
APP_NAME
变量,以避免出现冲突的Docker容器。 - 如果下面详细说明的"run"命令不起作用,您可能需要修改
VOLUME_WORDPRESS_PATH
。此变量必须指向您的WordPress安装文件夹,相对于spinup-local-wp
节点包根目录的安装位置;它应该与NPM一起工作(NPM将包安装在不同的位置),但不与PNPM一起工作。 - 可选地调整
DB_NAME
、DB_USER
和DB_PASSWORD
变量,以提高安全性并使其与您的生产环境相匹配。 - 修改
.env.local
以覆盖.env
中的任何生产变量,用于本地开发目的。默认情况下,它被配置为覆盖所需的覆盖,例如通过MY_FRONTEND_URL
变量将您的解耦前端的生产URL覆盖为https://:5000
。
注意:.env
默认情况下被git忽略,您可能希望保持这种方式以保持生产值安全/保密。因此,请记住手动将您的.env
文件添加到您的生产服务器环境中,或构建自己的解决方案来自动化该操作(这可能是未来指南的主题)。
ACF Pro
强烈建议您在此处购买Advanced Custom Fields (ACF) Pro许可证这里。ACF Pro启用了大多数无头网站所需的内容建模功能,例如ACF块、重复字段、选项页面、画廊字段等。
通过Composer安装ACF Pro需要额外几个步骤,因为他们需要验证您的许可证
- 按照这篇文章操作,在CloakWP Bedrock根目录下创建一个包含您的许可证密钥的
auth.json
文件(即与composer.json
位于同一位置) - 打开Docker桌面应用程序
- 从CloakWP Bedrock根目录运行以下命令
npm run composer require wpengine/advanced-custom-fields-pro
JWT身份验证
我们使用[JWT身份验证WP-API](https://wordpresstheme.cn/plugins/jwt-authentication-for-wp-rest-api/)插件来使用JSON Web Tokens (JWTs)进行受保护API路由的认证,例如在预览模式下从您的解耦前端请求帖子修订时。CloakWP Bedrock已为您预先配置了一切,您只需创建您的令牌即可
- 运行项目(见下文),
- 向以下端点发送POST请求,将WP_USERNAME + WP_PASSWORD替换为您自己的WordPress登录凭据(不确定如何操作?尝试Insomnia桌面应用程序,它对于在整个无头项目生命周期中测试/保存REST API请求非常有用)。
https:///wp-json/jwt-auth/v1/token?username=WP_USERNAME&password=WP_PASSWORD
- 复制POST请求返回的
token
值,并在您的解耦前端的.env.local
文件中创建一个环境变量来存储它(您将传递此ENV变量到前端中的cloakwp.config.js
的createWPInstance()
内)。
运行
确保在运行下面的dev命令之前打开Docker桌面应用程序
npm run dev
这会运行docker-compose up
,Docker Compose现在将启动所有服务
Starting {APP_NAME}-mysql ... done Starting {APP_NAME}-composer ... done Starting {APP_NAME}-phpmyadmin ... done Starting {APP_NAME}-wordpress ... done Starting {APP_NAME}-nginx ... done Starting {APP_NAME}-mailhog ... done
🚀 在浏览器中打开https:///wp以开始使用WordPress!您的数据将在会话之间持久化。
PhpMyAdmin
PhpMyAdmin作为docker-compose中的服务安装。
🚀 在浏览器中打开http://127.0.0.1:8082/以登录和管理您的本地数据库。
MailHog
MailHog作为docker-compose中的服务安装。
🚀 在浏览器中打开http://0.0.0.0:8025/
CLI工具
了解更多有关通过Spinup Local WP包提供给您的CLI工具,例如使用WP-CLI、Composer添加/删除/更新插件和主题,或运行Docker命令的信息。