padilla-digital / wp-template
为Pantheon托管站点提供的WordPress启动模板
Requires
- php: >=7.2
- composer/installers: ^1.3.0
- pantheon-systems/quicksilver-pushback: ^2
- pantheon-systems/wordpress-composer: *
- roots/wp-password-bcrypt: ^1.0.0
- rvtraveller/qs-composer-installer: ^1.1
- vlucas/phpdotenv: ^3.1.0
- wpackagist-plugin/lh-hsts: ^1.24
- wpackagist-plugin/pantheon-advanced-page-cache: >=0.3.0
- wpackagist-plugin/wp-native-php-sessions: >=0.6.9
- wpackagist-theme/twentynineteen: ^1.2
Requires (Dev)
- behat/mink-goutte-driver: ^1.2.1
- brain/monkey: ^2.2.0
- dealerdirect/phpcodesniffer-composer-installer: ^0.5.0
- dmore/behat-chrome-extension: ^1.2
- genesis/behat-fail-aid: ^2.1
- paulgibbs/behat-wordpress-extension: ^3.3.0
- phpunit/phpunit: ^7.5.1
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.4.0
- wp-coding-standards/wpcs: ^1.2.1
- dev-master
- 2.4.0
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.0
- 1.0.1
- dev-clu-2021-08-26-00-02
- dev-clu-2021-08-24-00-02
- dev-clu-2021-08-23-00-03
- dev-clu-2021-08-21-00-03
- dev-clu-2021-07-23-00-04
- dev-clu-2021-07-14-00-03
- dev-clu-2021-07-13-00-03
- dev-clu-2021-06-29-00-03
- dev-clu-2021-06-23-00-03
- dev-clu-2021-05-19-00-03
- dev-clu-2021-05-18-00-03
- dev-clu-2021-05-14-00-04
- dev-clu-2021-05-01-00-03
- dev-clu-2021-04-29-00-04
- dev-clu-2021-04-27-00-04
- dev-clu-2021-04-23-00-03
- dev-clu-2021-04-17-00-03
- dev-clu-2021-03-24-00-05
- dev-clu-2021-03-22-00-04
- dev-clu-2021-03-20-00-04
- dev-clu-2021-03-17-00-04
- dev-clu-2021-03-14-00-05
- dev-clu-2021-03-06-00-04
- dev-clu-2021-03-05-00-04
- dev-clu-2021-02-17-00-03
- dev-clu-2021-02-04-00-05
- dev-clu-2021-01-25-00-10
- dev-clu-2021-01-20-00-07
- dev-clu-2021-01-09-00-05
- dev-clu-2021-01-08-00-07
- dev-clu-2021-01-01-00-05
- dev-clu-2020-12-23-00-05
- dev-clu-2020-12-15-00-06
- dev-clu-2020-12-14-00-06
- dev-clu-2020-12-09-00-06
- dev-clu-2020-12-06-00-05
- dev-clu-2020-12-03-00-05
- dev-clu-2020-12-02-00-07
- dev-clu-2020-11-30-00-05
- dev-clu-2020-11-26-00-05
- dev-clu-2020-11-25-00-07
- dev-clu-2020-11-23-00-05
- dev-clu-2020-11-20-00-05
- dev-clu-2020-11-17-00-05
- dev-clu-2020-11-12-00-06
- dev-clu-2020-11-11-00-06
- dev-composer-2
- dev-clu-2020-10-31-00-06
- dev-clu-2020-10-30-00-06
- dev-clu-2020-10-26-00-05
- dev-clu-2020-10-24-00-04
- dev-clu-2020-10-16-00-05
- dev-clu-2020-10-08-00-04
- dev-clu-2020-10-05-00-04
- dev-clu-2020-09-30-00-06
- dev-clu-2020-09-25-00-05
- dev-clu-2020-09-24-00-04
- dev-clu-2020-08-30-00-04
- dev-clu-2020-08-29-00-04
- dev-main
- dev-clu-2019-11-13-01-53
- dev-clu-2019-10-17-00-04
- dev-clu-2019-10-14-22-25
- dev-clu-2019-08-09-16-39
- dev-clu-2019-08-04-00-04
- dev-clu-2019-06-06-00-02
- dev-clu-2019-05-25-00-02
- dev-clu-2019-05-24-00-02
- dev-wordsesh-2019-demo
- dev-clu-2019-05-23-00-02
- dev-clu-2019-05-22-00-02
- dev-clu-2019-05-21-00-02
- dev-clu-2019-05-20-00-02
- dev-clu-2019-05-19-00-02
- dev-clu-2019-05-18-00-02
- dev-clu-2019-05-17-00-02
- dev-clu-2019-05-16-00-02
- dev-clu-2019-05-15-00-02
- dev-clu-2019-05-14-00-03
- dev-clu-2019-05-13-00-02
- dev-clu-2019-05-12-00-06
- dev-clu-2019-05-11-00-02
- dev-clu-2019-05-10-00-02
- dev-clu-2019-05-09-00-02
- dev-clu-2019-05-08-00-28
- dev-clu-2019-05-08-00-02
- dev-clu-2019-05-07-00-04
- dev-clu-2019-05-06-00-02
- dev-clu-2019-05-05-00-02
- dev-clu-2019-05-04-00-02
- dev-clu-2019-05-03-00-02
- dev-clu-2019-05-02-00-02
- dev-clu-2019-05-01-00-02
- dev-clu-2019-04-30-00-02
- dev-clu-2019-04-29-00-02
- dev-clu-2019-04-28-00-03
- dev-clu-2019-04-27-00-02
- dev-clu-2019-04-26-00-02
- dev-clu-2019-04-25-00-03
- dev-clu-2019-04-24-00-02
- dev-clu-2019-04-23-00-02
- dev-wordpress-5.1.1
- dev-custom-login
- dev-update-5.1
- dev-gitlab-ci-no-pr
- dev-clu-2018-12-06-22-44
- dev-default-php72
- dev-clu-2017-10-31-18-11
- dev-readme-instructions
- dev-issue-35-quicksilver-pushback-403
- dev-behat-example-for-webinar
- dev-php-70--global-variables
- dev-php-70--pin-wordhat
- dev-php-70-plus-logic-fix
- dev-php56
- dev-dynamic-build-tools-version
- dev-packagist-test
- dev-coming-soon
- dev-old-master
This package is not auto-updated.
Last update: 2024-09-21 07:20:23 UTC
README
此存储库是使用Composer、持续集成(CI)、自动化测试和Pantheon的现代WordPress工作流程的参考实现和起始状态。尽管这是一个好的起点,但你仍需要为你的项目自定义和维持CI/测试设置。
此存储库应通过Terminus Build Tools插件一次性复制,但也可以用作模板。不应直接克隆或分叉。
Terminus Build Tools插件将构建一个新项目,包括
- A Git仓库
- 一个免费的Pantheon沙盒站点
- 持续集成配置/凭证设置
有关创建新项目的更多详细信息和方法,请参阅Terminus Build Tools插件。
重要文件和目录
/web
由于在pantheon.yml
中进行了配置,Pantheon将从/web
子目录中提供服务。这对于基于Composer的工作流程是必要的。将您的网站放在此子目录中还可以使与项目相关的测试、脚本和其他文件存储在您的存储库中,而不会污染您的Web文档根目录或从Pantheon中公开访问。如果项目是公开的,它们仍可以通过版本控制项目访问。有关详细信息,请参阅pantheon.yml
文档。
/web/wp
即使在/web
目录中,您也可能注意到其他目录和文件的位置与默认WordPress安装不同。WordPress允许在它自己的目录中安装WordPress核心,这在使用Composer安装WordPress时是必要的。
请参阅/web/wp-config.php
以获取关键设置,如WP_SITEURL
,它必须更新,以便WordPress核心在重新定位的/web/wp
目录中正常工作。存储库中目录的整体布局受Bedrock的启发,但并不完全相同。
composer.json
此项目使用Composer管理第三方PHP依赖项。
应使用composer.json
中的require
部分来指定任何您的Web项目需要的依赖项,即使这些依赖项可能在非生产环境中才使用。所有require
依赖项都将推送到Pantheon。
应使用require-dev
部分来指定不属于Web应用程序但构建或测试项目所必需的依赖项。一些示例包括php_codesniffer
和phpunit
。开发依赖项不会部署到Pantheon。
如果您只是在GitHub上浏览此存储库,您可能看不到上述某些目录,例如web/wp
。这是因为WordPress核心及其插件是通过Composer安装的,并在.gitignore
文件中被忽略。
本项目使用自定义的,Pantheon 的 WordPress Composer 版本作为 WordPress 核心的源。
通过composer.json
文件将第三方 WordPress 依赖项(如插件和主题)添加到项目中。composer.lock
文件记录了依赖项的确切版本。Composer 的installer-paths
用于确保 WordPress 依赖项下载到相应的目录。
非 WordPress 依赖项下载到/vendor
目录。
.ci
此.ci
目录用于存储在持续集成上运行的脚本。提供者特定的配置文件(如.circle/config.yml
和.gitlab-ci.yml
)使用这些脚本。
根据其功能,脚本组织在.ci
的子目录中:build
、deploy
或test
。
构建脚本 .ci/build
构建适合部署的工件步骤。根据需要,您可以在此处添加其他构建脚本,例如安装 Node 依赖项。
.ci/build/php
使用 Composer 安装 PHP 依赖项
构建脚本 .ci/deploy
用于促进代码部署到 Pantheon 的脚本。
.ci/deploy/pantheon/create-multidev
为除默认 Git 分支以外的分支创建一个新的Pantheon multidev 环境- 请注意,并非所有用户都有 multidev 访问权限。有关详细信息,请参阅multidev 常见问题文档。
.ci/deploy/pantheon/dev-multidev
根据 Git 分支将构建的工件部署到 Pantheon 的dev
或 multidev 环境
自动化测试脚本 .ci/tests
运行自动化测试的脚本。根据您的测试需求,您可以在此处添加或删除脚本。
GitHub Actions 工作流程 .ci/.github
此文件夹应复制到根目录的 .github 文件夹中以启用 GitHub Actions。还需要向 GitHub Actions 配置中添加一些密钥。
静态测试 .ci/test/static
和tests/unit
静态测试在不执行代码的情况下分析代码。它在检测语法错误方面表现良好,但不能检测功能。
.ci/test/static/run
运行PHP CodeSniffer与WordPress 编码标准、PHP 单元测试和PHP 语法检查。tests/unit/bootstrap.php
引导 Composer 自动加载器tests/unit/TestAssert.php
一个单元测试示例。项目特定的测试文件需要创建在tests/unit
中。
视觉回归测试 .ci/test/visual-regression
视觉回归测试使用无头浏览器对网页进行截图并比较视觉差异。
.ci/test/visual-regression/run
运行BackstopJS视觉回归测试。.ci/test/visual-regression/backstopConfig.js
BackstopJS配置文件。在此处设置的设置需要根据您的项目进行更新。例如,pathsToTest
变量决定了要测试的 URL。
Behat 测试 .ci/test/behat
和tests/behat
Behat是一个用 PHP 编写的接受/端到端测试框架。它方便在 Pantheon 基础设施上测试完全构建的 WordPress 网站。WordHat用于帮助集成 Behat 和 WordPress。
.ci/test/behat/initialize
删除 Behat 测试中的任何现有 WordPress 用户并创建要测试的环境的备份.ci/test/behat/run
设置 Behat 所需的动态信息环境变量BEHAT_PARAMS
,并通过 Terminus 配置使用 wp-cli,创建 Behat 测试所需的 WordPress 用户,启动无头 Chrome 并运行 Behat。.ci/test/behat/cleanup
恢复之前制作的数据库备份,删除 Behat 测试使用的 WordPress 用户,并保存 Behat 捕获的屏幕截图。tests/behat/behat-pantheon.yml
是 Behat 配置文件,兼容运行针对 Pantheon 站点的测试。tests/behat/tests/behat/features
Behat 测试文件(以.feature
扩展名)应存储的位置。提供的示例测试需要替换为特定项目的测试。tests/behat/tests/behat/features/visit-homepage.feature
一个 Behat 测试文件,用于访问主页并验证200
响应。tests/behat/tests/behat/features/admin-login.feature
一个 Behat 测试文件,用于以管理员身份登录 WordPress 控制面板并验证访问新建用户。tests/behat/tests/behat/features/admin-login.feature
一个 Behat 测试文件,用于以管理员身份登录 WordPress 控制面板,更新blogname
和blogdescription
设置,清除 Pantheon 缓存,访问主页,并验证更新后的博客名称和描述出现。
Github Actions
如果您需要为现有项目启用 Github Actions,应将 .ci/.github 复制到 .github,然后在 Github Actions 配置中添加以下机密信息
- ADMIN_EMAIL
- ADMIN_PASSWORD
- ADMIN_USERNAME
- TERMINUS_TOKEN
- TERMINUS_SITE
- SSH_PRIVATE_KEY
- GH_TOKEN
在本地使用 Lando
要开始使用 Lando 进行本地开发,请完成以下一次性步骤。请注意,Lando 是一个独立产品,并由 Pantheon 支持。如需进一步帮助,请参阅 Lando 文档。
- 安装 Lando(如果尚未安装)。
- 从 GitHub(或 GitLab 或 BitBucket)本地克隆您的项目存储库。
- 根据 WordPress 配方 手动创建一个
.lando.yml
文件,并配置您的首选设置。 - 运行
lando start
来启动 Lando。- 保存本地站点 URL。它应该类似于
https://<PROJECT_NAME>.lndo.site
。
- 保存本地站点 URL。它应该类似于
- 运行
lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress
来下载依赖项。 - 运行
lando pull --code=none
来下载来自 Pantheon 的媒体文件和数据库。 - 访问上述保存的本地站点 URL。
现在您应该能够本地编辑您的站点。上述步骤在后续启动中无需重复完成。您可以使用 lando stop
停止 Lando,然后使用 lando start
再次启动它。
警告:请勿在 Lando 和 Pantheon 之间直接推送/拉取代码。所有代码都应推送到 GitHub,并通过持续集成服务(如 CircleCI)部署到 Pantheon。
Composer、Terminus 和 wp-cli 命令应在 Lando 中运行,而不是在主机机器上运行。这通过在所需命令前加上 lando
来完成。例如,在更改 composer.json
后运行 lando composer update
而不是 composer update
。