标签: 命令模式

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

    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
    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
    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 command subcommand requiredparam –optionalparam –optionalparam2=value
    wp command subcommand requiredparam --optionalparam --optionalparam2=value

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

    wp theme install twentyseventeen –activate
    wp theme install twentyseventeen –activate
    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
    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
    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
    wp core download –skip-content –force
    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’
    wp option update home ‘http://example.com’
    wp option update siteurl ‘http://example.com’
    wp option update home 'http://example.com'
    wp option update siteurl 'http://example.com'

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

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

    wp plugin list
    wp plugin list
    wp plugin list

    WP-CLI插件列表

    WP-CLI插件列表

    安装多个插件

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

    wp plugin install advanced-custom-fields jetpack ninja-forms –activate
    wp plugin install advanced-custom-fields jetpack ninja-forms –activate
    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
    wp plugin install wordpress-seo –version=4.8 –activate
    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 install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip –activate
    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 wordpress-seo
    wp plugin deactivate wordpress-seo

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

    wp plugin deactivate –all
    wp plugin deactivate –all
    wp plugin deactivate --all

    WP-CLI停用所有插件

    WP-CLI停用所有插件

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

    更新插件

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

    wp plugin update wordpress-seo
    wp plugin update wordpress-seo
    wp plugin update wordpress-seo

    WP-CLI手动更新WordPress插件

    WP-CLI手动更新WordPress插件

    数据库搜索和替换

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

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

    wp search-replace oldstring newstring
    wp search-replace oldstring newstring
    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’
    wp role create organizer Organizer
    wp cap list ‘editor’ | xargs wp cap add ‘organizer’
    wp cap add ‘organizer’ ‘manage-events’
    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 user generate –count=5 –role=editor
    wp user generate –count=10 –role=author
    wp term generate –count=12
    wp post generate –count=50
    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 event list
    wp cron event list

    wp-cron事件列表

    wp-cron事件列表

    删除瞬态

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

    wp transient delete –all
    wp transient delete –all
    wp transient delete --all

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