WP-CLI v2 – 通过终端管理WordPress

在其生命的大部分时间里,WordPress都是使用简单的代码库构建的,其中少量面向对象的 PHP 是最抽象的系统。然而,在过去的几年里,这种情况正在好转。从单元测试到CSS预处理和命令行工具,越来越多对开发人员友好的资产不断涌现。在本文中,我们将介绍我的最爱之一:WP-CLI

什么是WP-CLI

WP-CLI是一个命令行工具,供开发人员管理 WordPress 安装的常见任务(并不常见)。它可以添加/删除用户、文章、类别、插入测试数据、在数据库中搜索和替换、重置密码、帮助解决性能问题等等!

WP-CLI作为一个开源项目已有十多年的历史, 自2003年以来主要由Daniel Bachhuber维护 。WP-CLI 的主要目标是帮助加快WordPress开发人员的工作流程

多年来,该项目已经出现了更多!它现在甚至成为其他开源项目(例如Trellis和Bedrock )的要求。截至2017年1月,WP-CLI正式迁移到WordPress.org,现在也由Alain Schlesser共同维护

WP-CLI v2于2018年8月8日发布,因此我们还将探索一些变化和新功能。

获取WP-CLI

WP-CLI v2.0.0的最低PHP要求已提高到PHP 5.4。虽然这是一个很好的进步,但我们建议您至少运行受支持的PHP版本,即5.6或更高版本。

要开始使用,您需要安装WP-CLI——一个非常简单的过程。Linux和OSX的步骤如下,依次发出这三个命令:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

如果出现问题或者您使用的是Windows,请参阅基本说明其他安装方法

完成后,您应该能够发出wp --info命令并获得有意义的响应。

如果你想在你的服务器上安装WP-CLI,这个过程是一样的。不确定您当前运行的是哪个版本?您可以随时发出wp cli version命令来查找。

WP-CLI的基础知识

从命令行访问WordPress本身就很强大,但在使用bash脚本时可以为您提供更多控制和速度提升。

Bash脚本允许您使用单个命令运行一系列命令。您可以键入bash install-and-setup.sh并获得以下结果:

  • 下载WordPress
  • 创建和填充 wp-config.php
  • 创建数据库
  • 安装WordPress
  • 安装并激活您需要的任何插件
  • 安装并激活主题
  • 下载并添加测试内容

这些将是我为项目创建新测试环境所采取的步骤。通常至少需要5-10分钟,特别是如果涉及到一些插件。发出单个命令显然要快得多。

一般WP-CLI命令

如果您习惯于在终端中工作,那么WP-CLI对您来说没有什么特别之处。命令总是以开头,wp后跟命令和子命令,后跟必需和可选参数,如下所示:

wp command subcommand requiredparam --optionalparam --optionalparam2=value

让我们安装一个主题,看看它是如何与真实命令配合使用的:

wp theme install twentyseventeen --activate

这将在您的 WordPress 安装中安装并激活二〇一七主题。

请注意,WP-CLI将与您当前在终端中的WordPress安装一起使用。如果您切换目录以转到另一个WordPress安装,它将适用于该安装。

有用的例子

简而言之,这就是WP-CLI!虽然您可以执行一些高级操作(我们稍后会介绍),但您已经掌握了足够的知识,可以开始并执行所需的任何操作。我建议查看命令列表,尝试其中的一些。我们将在这里看一些有用的东西,然后继续通过SSH使用WP-CLI和使用bash脚本。

安装WordPress

我经常使用WP-CLI来设置测试环境,第一步是vanilla安装。这是我运行的命令列表:

wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp db create
wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com

注意这有多酷!使用第一个命令下载最新版本的WordPress。第二个命令使用数据库访问权限和一些附加的PHP设置配置文件。额外的常量确保我们有我们的调试选项进行测试。如果您想了解有关调试WordPress的更多信息,我们在此处提供了详细指南。

第三个命令创建数据库(WP-CLI使用配置文件中的数据库访问信息),最后,我们使用几个参数安装WordPress。

重新安装WordPress核心

您还可以使用WP-CLI重新安装WordPress核心。以下命令将下载没有默认主题和插件的WordPress核心。

wp core download --skip-content --force

更改WordPress网址

您可能需要或想要更改WordPress URL的原因有很多。也许您正在更改域、移动到子域、从www更新到非www、移动文件,甚至从 HTTP 迁移到 HTTPS。无论情况如何,您都可以轻松使用该wp option update命令。下面是一个例子:

wp option update home 'http://example.com'
wp option update siteurl 'http://example.com'

包含详细信息的当前插件列表

要获取站点上安装的当前插件列表,只需使用以下命令。在此示例中,您可以看到我们安装了Schema和Yoast SEO插件。它还将返回状态(活动/停用)、是否有可用更新以及当前版本。

wp plugin list

WP-CLI插件列表

WP-CLI插件列表

安装多个插件

要安装多个插件,您可以简单地堆积参数。这是一个下载并激活3个插件的示例:

wp plugin install advanced-custom-fields jetpack ninja-forms --activate

请注意,插件名称来自它们在存储库中的名称。解决这个问题的最简单方法是访问他们的页面并查看URL或使用wp plugin search searchterm,它将在终端中为您提供列表。

WordPress插件库URL

WordPress插件库URL

如果需要,您还可以使用--version属性安装旧版本的WordPress插件。

wp plugin install wordpress-seo --version=4.8 --activate

更酷的是,您可以从远程文件安装插件,而不仅仅是在开发插件或使用高级插件时很方便的存储库。以下命令从存储库安装两个插件,一个从Amazon S3服务器安装。

wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate

停用多个插件

要停用单个插件,您可以运行以下命令。

wp plugin deactivate wordpress-seo

要一次停用所有插件,请运行以下命令。

wp plugin deactivate --all

WP-CLI停用所有插件

WP-CLI停用所有插件

如果您正在解决兼容性问题并且只需要一举停用所有插件,则上述命令会很方便。然后,您可以返回并一一启用它们,随时进行测试。

更新插件

您还可以手动更新WordPress插件。下面的例子:

wp plugin update wordpress-seo

WP-CLI手动更新WordPress插件

WP-CLI手动更新WordPress插件

数据库搜索和替换

仅通过复制粘贴数据库难以搬迁站点的主要原因之一是该数据库包含序列化数组。如果您需要http://testsite.comhttp://livewebsite.com序列化数组替换所有实例将没有意义,因为字符串计数不匹配。

search-replace命令首先反序列化数组,然后执行搜索和替换,然后重新序列化数组。您可以使用一个简单的命令完成此操作:

wp search-replace oldstring newstring

附加参数允许您执行更多操作,包括预览将使用--dry-run.

导出导入

有两种使用WP-CLI导出内容的方法。您可以创建一个XML文件,就像WordPress导出工具一样,或者您可以导出/导入原始数据库。我发现后者在我的日常生活中更有用,它在同步站点时派上用场。

wp db export这是您创建SQL文件所需要做的wp db import file.sql全部工作,并且是您导入它所需的全部工作。就像一个魅力,只是小心不要覆盖你需要的任何东西,导入基本上会转储现有的数据库并使用提供的SQL文件代替。

管理角色和权限

WP-CLI 可以使用该wp role命令轻松地为您管理角色。如果您想测试您的插件如何与自定义角色一起工作,但您实际上并未在插件中创建角色,那么这非常酷。

wp role create organizer Organizer
wp cap list 'editor' | xargs wp cap add 'organizer'
wp cap add 'organizer' 'manage-events'

上面的命令将创建一个新角色(Organizer),将编辑器角色的所有功能添加到它,然后添加一个新功能:管理事件。使用正确的命令,您可以使用 WP-CLI更改您的WordPres密码

生成测试数据

我喜欢各种类似faker的功能 – 向您的网站添加可用于测试的虚拟内容的功能。WP-CLI内置了其中的一些功能,这里有一些功能可以生成用户、术语和文章。

wp user generate --count=5 --role=editor
wp user generate --count=10 --role=author
wp term generate --count=12
wp post generate --count=50

管理WP-Cron事件

您可以在WP-CLI中管理WP-Cron事件和/或WordPress Cron作业。例如,以下命令将为您提供当前的cron事件列表。

wp cron event list

wp-cron事件列表

wp-cron事件列表

删除瞬态

您甚至可以使用以下命令删除和清除一个或所有瞬变。

wp transient delete --all

如果您正在运行multisite,则需要更复杂的命令。默认情况下,该命令仅检查wp_options表。它不检查wp_1_optionswp_2_options等等。

wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all

清理wp_options表

wp_options表可以为您的网站上查询慢倍常见原因归因于从第三方插件和主题留下自动加载数据。查看来自WP Bullet的这篇关于如何使用WP-CLI清理 wp_options表的文章。

删除WordPress修订历史

在大型网站上,WordPress修订版本可能会很快增加到数据库中不需要的数千行。您可以使用WP-CLI删除后期修订。这是命令的示例:

$ wp post delete $(wp post list --post_type='revision' --format=ids)

WP-CLI删除WordPress修订历史

WP-CLI删除WordPress修订历史

控制维护模式

从 WP-CLI v2.2.0 开始,您现在可以控制WordPress 站点上的维护模式。例子:

wp maintenance-mode activate
wp maintenance-mode deactivate
wp maintenance-mode status

使用Elasticsearch索引数据

Elasticsearch是一个开源的全文搜索引擎。它用于索引数据并以惊人的速度搜索该数据。您可以使用ElasticPress WP-CLI命令通过SSH执行索引。例子:

wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]

使用多语言网站

WP-CLI v2.0.0包括一个新的命令系列, wp i18n供您使用多语言网站的人使用。例如,您可以为WordPress插件或主题创建POT文件。

wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]] [--exclude=<paths>] [--skip-js]

请参阅i18n-command文档

在WooCommerce中使用WP-CLI

与电子商务网站合作?我们建议您查看Robot Ninja令人惊叹的WP-CLI WooCommerce开发指南,了解您可以使用的快速简便的命令。使用WP-CLI可以生成客户、订单列表,甚至创建批量产品。

远程使用WP-CLI

您可以使用WP-CLI做的最好的事情之一是管理您的远程WordPress安装。这确实是网站经理的梦想成真。

要通过SSH在远程服务器上无缝运行WP-CLI命令,您以前需要wp-cli-ssh插件命令。但是从v0.24.0开始,这现在是WP-CLI本身的一部分!

重要提示:您需要在运行命令的计算机和服务器上安装WP-CLI。

配置远程服务器

您可以全局或本地配置服务器。要全局配置它们,请使用 config.yml文件。您还可以使用当前工作目录中的wp-cli.ymlwp-cli.local.yml文件。

服务器的配置是这样工作的,将其粘贴到上述文件之一中:

ssh:
staging:
cmd: ssh %pseudotty% username@server.com %cmd%
url: http://myseite.com
path: /www/path/to/site/root

完成所有这些后,您可以键入以下命令来更新远程站点上的WordPress:

wp ssh core update --host=staging

如果您拥有或管理很多网站,我想您会发现这太棒了!该脚本将要求输入密码,但如果您使用RSA密钥登录,您也可以放弃密码。看看这篇文章来设置它。

使用Bash脚本

Bash脚本通过自动化任务为您节省更多时间。还记得我们需要输入很多命令来安装WordPress吗?您可以使用单个bash脚本来完成此操作。在目录中创建一个install.sh文件。将我们之前的代码粘贴到里面并保存。

wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp db create
wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com

您现在需要做的就是输入bash install.sh,一切都会为您完成,无需用户干预。如果您管理很多站点,您可以设置所有环境并创建一个bash脚本,如下所示:

wp ssh core update --host=clientA
wp ssh core update --host=clientB
wp ssh core update --host=clientC
wp ssh core update --host=clientD

当新的WordPress版本问世时,这可以为您节省大量时间!由于您可以使用WP-CLI做任何您喜欢的事情,您甚至可以一次在多个客户端站点上定期更新主题和插件。

小结

WP-CLI真的是开发人员和网站管理员的梦想成真。作为开发人员,我们可以快速创建测试站点,添加测试内容并执行各种导入/导出魔术。站点管理员可以使用单个命令处理多个站点的站点更新和其他任务。请务必查看WP-CLI v2发行说明

如果您还没有尝试过WP-CLI,我强烈建议您试一试。还有一堆社区命令,如WP-CLI-SSH,它们添加了更多强大的功能!如果您遇到问题,请务必查看WP-CLI常见问题文档

本文提到: