使用WP-CLI从命令行管理WordPress网站

WP-CLI是WordPress的命令行界面。 在本教程中,我们将研究使用WP-CLI进行基本的WordPress网站管理。

WP-CLI如何使您受益

  • 从命令行更有效地管理WordPress任务
  • 为您节省大量的点击次数,页面加载量和时间。
  • 做您在图形化WordPress仪表板中无法做的事情
  • 使用Cron自动化任务

如何在Linux服务器上安装WP-CLI

SSH登录到Linux服务器并下载 wp-cli.phar 存档使用 curl 要么 wget

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

要么

wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

然后使用以下命令验证其是否有效:

php wp-cli.phar --info

如果工作正常,您将看到类似下面的内容:

PHP binary:           /usr/bin/php
PHP version:          7.3.8
php.ini used:         /etc/php/php.ini
WP-CLI root dir:      phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:    phar://wp-cli.phar/vendor
WP_CLI phar path:     /home/linuxbabe
WP-CLI packages dir: 
WP-CLI global config: 
WP-CLI project config: 
WP-CLI version:       2.3.0

接下来,我们向档案文件添加可执行权限,将其移至 /usr/local/bin/ 并将其重命名为 wp

chmod +x wp-cli.phar

sudo mv wp-cli.phar /usr/local/bin/wp

现在我们可以输入 wp 代替 php wp-cli.phar

wp --info

当新版本的WP CLI出现时,您可以运行以下命令进行更新。

sudo wp cli update

如何使用WP-CLI

当运行wp-cli命令来更改WordPress网站的文件和目录时,您需要以Web服务器用户身份运行该命令,该用户通常名为 www-dataapache, 要么 nginx

如果没有为sudo指定选项,它将以root用户身份运行命令。 要以其他用户身份运行命令,请使用 -u 如下所示的选项。

sudo -u www-data wp plugin update --all

上面的命令将运行 wp plugin update --all 命令为 www-data 用户。 不更改文件或目录而仅获取信息的wp-cli命令可以以普通用户身份运行。

需要注意的另一件事是,在运行任何wp-cli命令之前,您需要将工作目录更改为WordPress安装目录。

cd /var/www/wp-site/

有了这些,我们来看看如何使用WP-CLI管理WordPress核心,WordPress主题和WordPress插件。

注意:如果看到以下错误

PHP Fatal error: Uncaught Error: Call to undefined function add_filter()

然后,您可能需要注释掉 add_filter 发挥作用 wp-config.php WP-CLI的文件。

管理WordPress核心

检查WordPress核心版本。

wp core version

显示WordPress核心的其他信息。

wp core version --extra

将WordPress核心更新到最新版本。

wp core update

将WordPress核心更新为最新的次要版本,而不是主版本。

wp core update --minor

检查MD5哈希

wp core verify-checksums

管理WordPress数据库

更新WordPress数据库

wp core update-db

优化数据库

wp db optimize

维修资料库

wp db repair

管理WordPress主题

列出已安装的主题

wp theme list

搜索主题

wp theme search <theme_name>

安装主题

wp theme install <theme_name>

从指定的URL安装主题。

wp theme install http://example.com/theme_name.zip

活跃主题

wp theme active <theme_name>

更新主题

wp theme update <theme_name>

更新所有主题

wp theme update --all

卸载主题

wp theme uninstall <theme_name>

管理WordPress插件

列出WordPress上安装的所有插件。 的 名称 栏位向您显示 蛞蝓 由您的插件使用。

wp plugin list

列出具有可用更新的插件。

wp plugin list --update=available

显示输出 json 要么 csv 格式。

wp plugin list --format=json

wp plugin list --format=csv

从WordPress插件目录安装插件。

wp plugin install <plugin_name>

从URL安装插件。

wp plugin install http://www.example.com/plugin_name.zip

激活插件

wp plugin activate <plugin_name>

停用插件

wp plugin deactive <plugin_name>

卸载插件

wp plugin uninstall <plugin_name>

更新插件

wp plugin update <plugin_name>

更新所有插件

wp plugin update --all

如果您的服务器安装了多个WordPress,则您可能需要运行以下命令以允许 www-data 用户写 /srv/http/ 目录,因为WP-CLI会将下载的文件缓存到该目录,因此WP-CLI在更新下一个WordPress安装时不必再次下载相同的文件。

sudo setfacl -R -m "u:www-data:rwx" /srv/http/

备份WordPress数据库和文件

运行以下命令来备份数据库。 请注意,将SQL文件放置在网站根目录下是非常不安全的。 而是将其放在其他位置,例如您的主目录。

wp db export ~/backup_db.sql

要备份文件,我们可以使用如下所示的旧版tar存档实用程序。

sudo tar -cpzvf ~/wp-file-backup.tar.gz /var/www/wp-site/

自动更新WordPress,主题和插件的简单Shell脚本

我们可以编写一个使用WP-CLI来自动更新WordPress核心,主题和插件的shell脚本。 我发现这种方式比使用更稳定 add_filter 自动更新WordPress的功能。 创建一个 .sh 根用户主目录中的文件。

sudo nano /root/auto-update-wp.sh

将以下行放入文件中。 您可能还想自动更新WP-CLI本身,因此添加 wp cli update 到这个文件。

#! /bin/bash
cd /var/www/wp-site/

sudo -u www-data wp core update --quiet
sudo -u www-data wp core update-db --quiet
sudo -u www-data wp theme update --all --quiet
sudo -u www-data wp plugin update --all --quiet

wp cli update --quiet --yes

exit

请注意,我使用 sudo -u 更改用户。 许多人认为 susudo 手段 super user 。 实际上,这意味着“切换用户并做某事”。 默认情况下,它切换到root。 的 --quiet 标志将禁止显示信息性消息,并且 --yes 标记将提供对问题的肯定回答,是否有可用的WP CLI新稳定版本。

保存脚本并添加可执行权限。

sudo chmod +x /root/auto-update-wp.sh

然后在根用户的crontab中添加一个新条目。

sudo crontab -e

以下条目将在每天凌晨4点检查并执行自动更新。

0 4 * * * bash /root/auto-update-wp.sh

设置PATH变量是一个好主意,以便cron可以找到要运行的命令。 将以下行放在crontab文件的开头。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

如何在仪表板中禁用WordPress更新通知

如果您在Cron中配置了自动更新,则可能要在WordPress仪表板中禁用更新通知。 只需将以下代码添加到 functions.php 文件放在主题文件夹下,您就完成了。

//disable WordPress core update notification
add_action('after_setup_theme','remove_core_updates');
function remove_core_updates()
{
 if(! current_user_can('update_core')){return;}
 add_action('init', create_function('$a',"remove_action( 'init', 'wp_version_check' );"),2);
 add_filter('pre_option_update_core','__return_null');
 add_filter('pre_site_transient_update_core','__return_null');
}

搜索并替换为WP CLI

您可以使用WP CLI批量替换WordPress数据库中的文本模式。 例如,如果将WordPress从HTTP迁移到HTTPS,则可能需要通过运行以下命令将所有HTTP链接替换为HTTPS。

wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --precise --recurse-objects --all-tables

更新资料

从5.5版开始,WordPress允许您将插件和主题设置为在WordPress管理界面中自动更新或不自动更新。

包起来

这只是一个介绍。 WP-CLI的扩展性很强,可以做更多的事情。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。 您也可以在Google +,Twitter或喜欢我们的Facebook页面上关注我们。

Sidebar