andrewmead / wpsites
本地 WordPress 站点管理
Requires
- php: ^8.2
Requires (Dev)
- cuyz/valinor: ^1.12
- laravel-zero/framework: ^11.0.0
- laravel/pint: ^1.15.2
- laravel/prompts: ^0.1.24
- mockery/mockery: ^1.6.11
- pestphp/pest: ^2.34.7
- wp-cli/wp-config-transformer: ^1.3
README
WPSites 是创建本地 WordPress 网站最快的方式。
你所需要做的就是运行 wpsites create
,选择一个模板,命名你的站点,然后——咻!它就上线了!
查看详情
WPSites-Intro-Compressed.mp4
内容
为什么?
我已经开发了独立分析两年了,在这期间我创建了数百(数千?)个临时 WordPress 网站。
我会为开发、测试客户问题、追踪特定版本的回归,以及无数其他原因创建一个新的站点。
这是一个不断重复的过程。我创建一个新站点,只是为了以与之前无数次完全相同的方式配置它。启用调试模式。创建本地构建的符号链接。安装我们集成的插件。等等。
不再如此。
现在,我运行 wpsites create
,选择我想要使用的模板,10秒后,我就在查看我新 WordPress 站点的管理面板了。
这是极好的。
这个项目工作起来非常愉快。我希望你能从中得到一些价值。如果你遇到任何问题,请打开一个问题。我希望尽可能让 WPSites 在尽可能多的不同设置上为尽可能多的人工作。
入门
安装
您希望将 WPSites 作为全局 composer 包安装。这将使您可以从机器上的任何位置访问 wpsites
命令。
composer global require andrewmead/wpsites
安装过程将在 ~/.composer/vendor/bin/
中放置 PHAR 可执行文件。请确保此目录是您路径的一部分,否则命令如 wpsites create
将无法工作。
生成配置文件
在您创建第一个 WordPress 站点之前,您需要生成一个配置文件。您可以通过运行 wpsites config
来完成此操作。此命令将默认配置文件复制到 ~/.wpsites.php
。
$ wpsites config
Copying default config to `/Users/andrewmead/.wpsites.php`
Config file successfully created!
一旦您的配置文件创建完成,请用文本编辑器打开它,因为您需要在创建第一个站点之前更改一些值。
配置您的站点目录
您需要告诉 WPSites 您希望在文件系统中创建新站点的地方。您可以通过更改 ~/.wpsites.php
顶部附近的 sites_directory
值来完成此操作。
// ~/.wpsites.php return [ // ... 'sites_directory' => '$HOME/Herd', // ... ];
如果使用 Laravel Herd,默认的 $HOME/Herd
值将适用。如果您使用 MAMP PRO,则需要将路径更改为 $HOME/Sites
。
您可以将站点存储在任何地方,但请确保站点的目录由您的本地主机服务器提供。
配置您的数据库连接
除了站点的目录之外,您还需要配置数据库连接。
为此,您可以使用三种选项。在 defaults
中,您希望使用 database_host
、database_username
和 database_password
。
默认情况下,WPSites 将尝试以用户 root
无密码连接到 127.0.0.1:3306
。更改这些值以匹配您的本地数据库服务器。
// ~/.wpsites.php return [ // ... 'defaults' => [ // ... 'database_host' => '127.0.0.1:3306', 'database_username' => 'root', 'database_password' => null, // ... ] ];
您可以在下一步尝试创建一个新的站点来测试您的数据库连接。
创建您的第一个站点
现在您可以创建第一个站点了!
通过运行 wpsites create
创建您的第一个站点。您将被提示选择一个模板。目前选择“基本WordPress”。我们稍后会详细介绍模板。接下来,选择您站点的别名。
几秒钟后,您应该会看到您全新的WordPress站点!
$ wpsites create
┌ Which template would you like to use? ───────────────────────┐
│ › ● Basic WordPress │
│ ○ Basic Multisite WordPress │
│ ○ Symlink plugin example │
│ ○ Bug recreation example │
└──────────────────────────────────────────────────────────────┘
┌ What slug would you like to use? ────────────────────────────┐
│ any-slug-you-like │
└──────────────────────────────────────────────────────────────┘
Downloading core files...
Creating site...
Creating database...
Running installation...
Enabling error log...
Enabling automatic login...
Installing default theme...
Opening site...
太棒了!
请注意,您无需登录到管理面板。这要归功于 自动登录
插件。新站点已启用自动登录。它们还启用了调试日志。在 模板选项 中有设置来禁用这两者,但我发现这对本地开发来说非常完美。
创建您的第一个站点只是开始。继续阅读,了解您如何创建自己的模板以创建符合您需求的站点!
配置 WPSites
在本节中,您将学习如何自定义WPSites以满足您的需求。这包括定义一组合理的默认值,以及定义您自己的模板,以便您可以快速启动预配置的站点。
探索默认配置文件
要开始,让我们来看看您最初运行 wpsites config
时创建的默认配置文件。
以下是整个默认配置文件的内容。
<?php // Explore every option that you can set: // https://github.com/andrewjmead/wpsites#template-options return [ 'sites_directory' => '$HOME/Herd', 'defaults' => [ 'database_host' => '127.0.0.1:3306', 'database_username' => 'root', 'database_password' => null, ], 'templates' => [ [ 'name' => 'Basic WordPress', ], [ 'name' => 'Basic Multisite WordPress', 'enable_multisite' => true, ], [ 'name' => 'Example with more options', 'wordpress_version' => '5.9.10', 'plugins' => [ 'independent-analytics', '/plugin/path/to/symlink', ], 'theme' => 'twentytwentythree' ], ], ];
配置文件只不过是一个返回关联数组的PHP文件。这个关联数组是您可以在这里自定义WPSites和定义您自己的模板的地方。
有三个顶级属性。
首先是 sites_directory
。
此值的应该是您计算机上现有目录的路径。
此目录是WPSites创建新WordPress站点的位置,因此请确保目录由您正在运行的PHP服务器提供服务。
如果您使用的是Laravel Herd,则默认值 '$HOME/Herd'
应该非常适用。如果您使用的是MAMP PRO,您希望使用 '$HOME/Sites'
。
接下来是 defaults
。
如上所示的配置文件中所示,defaults
的值是一个关联数组。
在这个数组上,您可以定义一组您希望应用于所有创建的站点的默认选项。请注意,任何可以在 defaults
上设置的选项也可以在模板上设置。模板值将覆盖设置的任何默认值。
默认配置文件定义了用于配置数据库连接的三个选项。这些是 database_host
、database_username
和 database_password
。您可能需要调整这些选项以与您的本地MySQL数据库服务器匹配。
最后是 templates
。
templates
的值是一个关联数组的数组。
数组中的每个项目都代表一个您在创建新站点时可以使用的模板。您必须定义的唯一属性是 name
。将 name
设置为一个描述站点的字符串。
上面的默认配置文件有三个模板。第一个模板是一个简单的模板,仅设置一个名称。第二个与第一个类似,但它将 enable_multisite
设置为 true
以创建多站点。最后一个模板使用更多选项来自定义站点。它使用 wordpress_version
来更改使用的WordPress版本。它使用 theme
来自定义主题。最后,它使用 plugins
来定义应安装的插件列表。
看看下面的 模板选项,看看有哪些功能。
制作自己的模板
您可以通过将关联数组添加到 templates
的末尾来创建一个新的模板。
您必须定义的唯一属性是 name
。设置名称后,您将在下次运行 wpsites create
时看到您的新模板作为选项列出。
下面是我的实际配置文件。花点时间看看,然后我将在下面指出一些值得注意的事项。
<?php return [ 'sites_directory' => '$HOME/Herd', 'defaults' => [ 'plugins' => [ 'code-snippets' ] ], 'templates' => [ [ 'name' => 'Basic WordPress', ], [ 'name' => 'Basic multisite WordPress', 'enable_multisite' => true ], [ 'name' => 'IAWP Dev', 'plugins' => [ '/Users/andrewmead/Projects/independent-analytics/independent-analytics', '/Users/andrewmead/Projects/iawp-developer-niceties', 'woocommerce', 'woo-order-test', 'surecart', ], ], [ 'name' => 'IAWP Dev Multisite', 'enable_multisite' => true, 'plugins' => [ '/Users/andrewmead/Projects/independent-analytics/independent-analytics', '/Users/andrewmead/Projects/iawp-developer-niceties', 'woocommerce', 'woo-order-test', 'surecart', ], ], [ 'name' => 'IAWP Latest Stable Release', 'plugins' => [ 'independent-analytics', ], ], ], ];
首先,请注意在 defaults
中没有定义数据库选项。实际上,任何地方都没有定义数据库选项。
对于 WPSites 所构建的我的机器,database_host
、database_username
和 database_password
的默认值不需要更改。database_host
等于 127.0.0.1:3306
是不必要的,因为这已经是选项的默认值。每个选项都有一个默认值,如果您对默认值满意,则无需配置它。
您可以在下面的 模板选项 中找到所有选项的默认值。
我在 defaults
中定义的一个选项是 plugins
。这让我能够定义一组我想要在所有新站点上使用的插件。如果模板也定义了 plugins
,则默认插件和模板插件将被合并,并将安装所有插件。
defaults
下方是 templates
。我定义了 5 个模板。
前两个是基本站点和多云站点模板,这些模板包含在默认配置文件中。并不太有趣。
第三个模板是 "IAWP Dev"。这是我用于构建独立分析主开发站点的模板。它创建了一些本地插件的符号链接,并安装了一些与我们一起集成的第三方插件。
第四个模板与第三个相同,但它是一个多云站点。
第五个也是最后一个模板是安装独立分析最新版本的站点。这从 WordPress 插件仓库安装插件,当我需要仅使用已发布的特性重新创建客户问题时,这很方便。
模板选项
以下是 WPSites 支持的所有选项。这些选项可以设置在 defaults
中或在一个特定模板中。
模板中定义的选项将覆盖 defaults
中定义的选项。
一些选项的工作方式略有不同。对于 plugins
、constants
和 options
,模板值与默认值合并。对于 plugins
,这意味着您可以在具有所有站点使用的默认插件的的同时设置模板特定的插件。对于 constants
和 options
,这意味着您可以在特定模板中设置默认值并覆盖它们。
- 插件
- 主题
- WordPress 版本
- 启用多云站点
- 启用错误日志记录
- 启用自动登录
- 数据库主机
- 数据库用户名
- 数据库密码
- 数据库名
- 管理员用户名
- 管理员电子邮件
- 管理员密码
- 时区
- Wordpress.org 收藏夹用户名
- 常量
- 选项
插件
选项: plugins
默认值: []
要安装的插件的数组。
使用类似于 woocommerce
的 slug 安装来自 WordPress 仓库的插件。通过附加 @
和版本号,如 woocommerce@9.3.1
来安装特定版本。
使用类似于 /plugin/to/symlink
的绝对路径来在您的机器上创建本地插件的符号链接。
[ 'plugins' => [ '/Users/andrew/projects/independent-analytics', '/Users/andrew/projects/iawp-developer-niceties', 'woocommerce@9.3.1', `woo-order-test`, ] ]
主题
选项: theme
默认值: 'twentytwentyfour'
要安装的主题。
使用类似 twentytwentyfour
的短名称从 WordPress 仓库安装主题。通过附加 @
和版本号,例如 twentytwentyfour@1.2
,安装特定版本。
使用绝对路径例如 /theme/to/symlink
在您的机器上创建本地主题的符号链接。
WordPress 版本
选项:wordpress_version
默认:'latest'
您的网站将使用的 WordPress 版本。有效值包括 'latest'、'nightly' 或 '6.0.0' 等WordPress版本。
启用多云站点
选项:enable_multisite
默认:false
启用以创建多站点。这将还会在多站点网络中创建第二个网站。
启用错误日志记录
选项:enable_error_logging
默认:true
启用以设置错误日志。这将WP_DEBUG设置为true,WP_DEBUG_LOG设置为true,并将WP_DEBUG_DISPLAY设置为false。
启用自动登录
选项:enable_automatic_login
默认:true
启用自动登录到管理面板。这是通过安装和配置自动登录插件来完成的。
数据库主机
选项:database_host
默认:'127.0.0.1:3306'
您网站数据库连接的主机(和端口!)。
数据库用户名
选项:database_username
默认:'root'
您网站数据库连接的用户名。
数据库密码
选项:database_password
默认:null
您网站数据库连接的密码。如果没有密码,应使用null值。
数据库名
没有选项可以定义数据库名称。相反,运行 wpsites create
时提供的短名称用作数据库名称。
管理员用户名
选项:admin_username
默认:'admin'
管理员用户的用户名。
管理员电子邮件
选项:admin_email
默认:'admin@example.com'
管理员用户的电子邮件。
管理员密码
选项:admin_password
默认:'password'
管理员用户的密码。
时区
选项:timezone
默认:'UTC'
网站时区。例如包括 America/New_York
、America/Denver
和 Europe/Berlin
。
查看 DateTimeZone::listIdentifiers()
的返回值以查看支持的时间区域。
Wordpress.org 收藏夹用户名
选项:wordpress_org_favorites_username
默认:null
WordPress.org 允许登录用户收藏插件和主题。您可以在此处提供您的WordPress.org用户名,以便在添加新插件或主题时在“收藏”选项卡下显示您的收藏。
常量
选项:constants
默认值: []
在 wp-config.php
中设置的一组常量。值应为一个键值对的关联数组。键是常量名称。值是常量的值。
[ 'constants' => [ 'MY_CONSTANT' => 'The value', 'MY_CONSTANT_NUMBER' => 42, 'MY_CONSTANT_BOOLEAN' => false, ] ]
选项
选项:options
默认值: []
在选项数据库表中设置的一组选项。值应为一个键值对的关联数组。键是选项名称。值是选项的值。
[ 'options' => [ 'prefix_option' => 'The value', 'prefix_option_number' => 42, 'prefix_option_boolean' => false, ] ]
命令
配置
运行 wpsites config
创建默认配置文件。您可以重新运行 wpsites config
将配置文件重置为其默认状态。
$ wpsites config
Loading config file at "/Users/andrewmead/.wpsites.php"
Copying default config to `/Users/andrewmead/.wpsites.php`
Config file successfully created!
创建
运行 wpsites create
基于配置文件中的模板创建新的 WordPress 网站。
$ wpsites create
Loading config file at "/Users/andrewmead/.wpsites.php"
┌ Which template would you like to use? ───────────────────────┐
│ › ● Basic WordPress │
│ ○ Basic Multisite WordPress │
│ ○ Symlink plugin example │
│ ○ Bug recreation example │
└──────────────────────────────────────────────────────────────┘
┌ What slug would you like to use? ────────────────────────────┐
│ any-slug-you-like │
└──────────────────────────────────────────────────────────────┘
Downloading core files...
Creating site...
Creating database...
Running installation...
Enabling error log...
Enabling automatic login...
Installing default theme...
Opening site...
销毁
运行 wpsites destroy
销毁一个或多个网站。
$ wpsites destroy
Loading config file at "/Users/andrewmead/.wpsites.php"
Checking which sites are WordPress sites...
┌ Which sites would you like to destroy? ──────────────────────┐
│ wp-test │
│ iawp │
└──────────────────────────────────────────────────────────────┘
┌ Are you sure you want to destroy the sites listed above? ────┐
│ Yes │
└──────────────────────────────────────────────────────────────┘
Deleting site "wp-test"
Deleting site "iawp"
打开
运行 wpsites open
在浏览器中打开现有的网站。
➜ ~ wpsites open
Loading config file at "/Users/andrewmead/.wpsites.php"
Checking which sites are WordPress sites...
┌ Which site would you link to open? ──────────────────────────┐
│ › ● iawp │
│ ○ latest-production-install │
│ ○ woocommerce │
└──────────────────────────────────────────────────────────────┘
限制
我仅使用 macOS,因此我没有验证 WPSites 是否在 Windows 或 Linux 上(或不起作用)。我希望在某个时候在这些环境中运行它。如果您遇到问题,请提交问题以便我可以支持这些平台。