shineunited / wordpress-installer
基于Conductor的WordPress安装程序。
Requires
- php: >=8.0
- composer-plugin-api: ^2.0
- oscarotero/env: ^2.1
- roots/bedrock-autoloader: ^1.0
- roots/wp-config: ^1.0
- shineunited/conductor: ^1.0
- shineunited/conductor-twig-addon: ^1.0
- symfony/filesystem: ^6.0
Requires (Dev)
Suggests
- roots/bedrock-disallow-indexing: Disallow indexing of your site on non-production environments
- roots/wp-password-bcrypt: Replaces wp_hash_password and wp_check_password with password_hash and password_verify using bcrypt
- shineunited/conductor-gitignore-addon: Allows autogeneration of gitignore rules for installed packages and created files
README
描述
使用Conductor构建的WordPress安装程序。
安装
要添加wordpress-installer,推荐的方法是通过composer。
$ composer require shineunited/wordpress-installer
配置
WordPress安装程序使用Conductor配置框架解析项目composer.json文件“extra”部分的参数。
参数
可配置参数
以下参数可以在composer.json文件的“extra”部分定义。
wordpress.webroot
(路径) Webroot目录的路径。默认为'web'。
wordpress.home-dir
(路径) WordPress主目录的路径,用于定义WP_HOME和WP_SITEURL。必须在webroot内。默认为 '{$wordpress.webroot}'。
wordpress.install-dir
(路径) WordPress安装目录的路径。必须在home-dir内。默认为 '{$wordpress.home-dir}/wp'。
wordpress.config-dir
(路径) 部署配置目录的路径。必须在webroot外。默认为'cfg'。
wordpress.content-dir
(路径) WordPress内容目录的路径。必须在home-dir内但不在install-dir内。默认为 '{$wordpress.home-dir}/app'。
wordpress.config.convert-bool
(布尔值) 如果为true,布尔环境配置变量将自动转换。默认为true。
wordpress.config.convert-null
(布尔值) 如果为true,null环境配置变量将自动转换。默认为true。
wordpress.config.convert-int
(布尔值) 如果为true,整数环境配置变量将自动转换。默认为true。
wordpress.config.strip-quotes
(布尔值) 如果为true,字符串环境配置变量将自动移除引号。默认为true。
wordpress.config.source
(选择) 必须是 'env', 'server' 或 'local' 之一。定义环境配置变量的来源。默认为false (无)。
- 'env' - 从 $_ENV 中获取
- 'server' - 从 $_SERVER 中获取
- 'local' - 使用带本地标志的getenv()
- (无) - 使用getenv()
wordpress.config.default-env
(选择) 定义默认环境名称,如果环境未在其它地方显式定义则使用。必须是 'production', 'staging' 或 'development'。默认为 'production'。
计算参数
以下参数可用于使用,但不能在项目的composer.json文件中覆盖。
wordpress.wpconfig-dir
(路径) wp-config.php文件将创建的目录路径。锁定在install-dir的上级目录。
wordpress.muplugins-dir
(路径) WordPress mu-plugins目录的路径。锁定在 '{$wordpress.content-dir}/mu-plugins'。
wordpress.plugins-dir
(路径) WordPress插件目录的路径。锁定在 '{$wordpress.content-dir}/plugins'。
wordpress.themes-dir
(路径) WordPress主题目录的路径。锁定在 '{$wordpress.content-dir}/themes'。
wordpress.uploads-dir
(路径) WordPress上传目录的路径。锁定在 '{$wordpress.content-dir}/uploads'。
wordpress.upgrade-dir
(路径) WordPress升级目录的路径。锁定在 '{$wordpress.content-dir}/upgrade'。
示例
{ "name": "example/project", "type": "project", "extra": { "wordpress": { "webroot": "web", "install-dir": "web/wp", "content-dir": "web/app", "config-dir": "cfg", "config": { "source": "server", "default-env": "production" } } } }
用法
扩展提供者能力
可以通过composer插件通过扩展提供者能力添加WordPress配置的扩展。
示例插件
插件必须实现Capable并提供扩展提供者能力。
<?php namespace Example\Project; use Composer\Composer; use Composer\IO\IOInterface; use ShineUnited\WordPress\Installer\Capability\ExtensionProvider; class ComposerPlugin implements PluginInterface, Capable { public function activate(Composer $composer, IOInterface $io): void { // ... } public function deactivate(Composer $composer, IOInterface $io): void { // ... } public function uninstall(Composer $composer, IOInterface $io): void { // ... } public function getCapabilities(): array { return [ ExtensionProvider::class => ExampleExtensionProvider::class ]; } }
示例提供者
提供者必须实现该能力,并返回一个ExtensionInterface对象列表。
<?php namespace Example\Project; use ShineUnited\WordPress\Installer\Capability\ExtensionProvider; use ShineUnited\WordPress\Installer\Extension\BeforeInitExtension; use ShineUnited\WordPress\Installer\Extension\AfterInitExtension; use ShineUnited\WordPress\Installer\Extension\BeforeEnvExtension; use ShineUnited\WordPress\Installer\Extension\AfterEnvExtension; class ExampleExtensionProvider implements ExtensionProvider { public function getExtensions(): array { return [ new BeforeInitExtension('inc/before-init.php'), // include before init config new AfterInitExtension('inc/after-init.php'), // include after init config new BeforeEnvExtension('inc/before-env.php'), // include before env config new AfterEnvExtension('inc/after-env.php'), // include after env config ]; } }