-
使用WP-CLI从命令行管理WordPress站点
WP-CLI是WordPress的命令行界面。在本教程中,我们将介绍如何使用WP-CLI进行基本的WordPress网站管理。 WP-CLI对您的益处 从命令行更高效地管理WordPress任务 为您节省大量点击、页面加载和时间。 做一些在图形化WordPress仪表板中做不到的事情 使用Cron自动化任务 如何在Linux服务器上安装WP-CLI SSH登录到Linux服务器并下载wp cli。使用curl或wget进行phar归档。 curl -O 或 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。法尔。 wp --info 当新版本的WP CLI发布时,可以运行以下命令进行更新。 sudo wp cli update 如何使用WP-CLI 当运行wp cli命令来更改WordPress站点的文件和目录时,您需要以web服务器用户的身份运行该命令,该用户通常被命名为www-data、apache或nginx。 当sudo没有任何选项时,它会以root用户的身份运行该命令。要以另一个用户的身份运行该命令,请使用下面的-u选项。 sudo -u www-data wp plugin update --all 上面的命令将以www数据用户的身份运行wp plugin update--all命令。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() 然后,您可能需要在wp config中注释掉add_filter函数。供WP-CLI使用的php文件。 管理WordPress核心 检查WordPress核心版本。 wp core version 显示WordPress核心的额外信息。 wp core version --extra 将WordPress core更新至最新版本。 wp core update 将WordPress core更新至最新的次要版本,而不是主版本。 wp core update --minor 检查MD5哈希 wp core verify-checksums 管理WordPress数据库 更新WordPress数据库 wp core update-db 优化数据库。(注意:此命令将暂时使您的网站无法访问:404未找到。) wp db optimize 修复数据库 wp db repair 管理WordPress主题 列出已安装的主题 wp theme list 搜索主题 wp theme search <theme_name> 安装一个主题 wp theme install <theme_name> 从指定的URL安装主题。 wp theme install 活跃的主题 wp theme active <theme_name> 更新主题 wp theme update <theme_name> 更新所有主题 wp theme update --all 卸载主题 wp theme uninstall <theme_name> 管理WordPress插件 列出WordPress上安装的所有插件。name字段显示插件使用的slug。 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 激活插件 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数据用户写入/srv/http/目录,因为WP-CLI将把下载的文件缓存到该目录中,因此在更新下一个WordPress安装时,WP-CLI不必再次下载相同的文件。 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/ 一个简单的Shell脚本,可以自动更新WordPress、主题和插件 我们可以编写一个shell脚本,使用WP-CLI自动更新WordPress核心、主题和插件。我发现这种方法比使用add_filter函数来自动更新WordPress更稳定。创建一个。根用户主目录中的sh文件。 sudo nano /root/auto-update-wp.sh 将以下行放入文件中。您可能还希望自动更新WP-CLI本身,因此将WP CLI更新添加到此文件。 #! /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来更改用户。很多人认为sudo中的su意味着超级用户。实际上它的意思是“切换用户并做点什么”。默认情况下,它会切换到root。--quiet标志将抑制信息性消息,--yes标志将为问题提供yes答案,以确定是否有新的稳定版本的WP CLI可用。 你可能想要改变 sudo -u www-data wp core update --quiet 到 sudo -u www-data wp core update --minor --quiet 因此WordPress将自动更新到最新的次要版本,而不是最新的主版本,这可能会引入bug。我总是将我的WordPress配置为落后一个版本。例如,如果最新的主版本是5.6,我会让我的WordPress保持在5.5版本。当WordPress 5.7发布后,我可以通过以下方式将我的WordPress更新到5.6: sudo -u www-data wp core update --version=5.6 你可以查看WordPress版本页面了解当前版本。 保存脚本并添加可执行权限。 sudo chmod +x /root/auto-update-wp.sh 然后在root用户的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 dashboard中禁用更新通知。只需在函数中添加以下代码。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非常可扩展,可以做更多的事情。你可能还想设置ModSecurity web应用防火墙来保护你的WordPress网站免受黑客攻击。如果您在Debian/Ubuntu上使用Apache web服务器,请阅读以下教程。 如何在Debian/Ubuntu上使用Apache设置ModSecurity 如果您在Debian/Ubuntu上使用Nginx web服务器,请阅读以下教程: 如何在Debian/Ubuntu上使用Nginx设置ModSecurity 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多教程?