用 WP-CLI 给 WordPress 网站重新生成缩略图

文章目录
  1. 1. 什么是 WP-CLI(WordPress Command Line Interface)
  2. 2. 在服务器上安装 WP-CLI
  3. 3. 使用 WP-CLI 给 WordPress 生成缩略图
  4. 4. WP-CLI 的其他功能
  5. 5. 设置文章插入的图片默认尺寸为原图
  6. 6. 更改 WordPress 后台媒体库加载的缩略图

此前为了保证图片浏览质量和节省磁盘空间,我几乎关闭了 WordPress 所有缩略图的输出,以前更新少流量低,也没觉得这么干有啥问题。近来博客更新比较频繁,流量也越来越高,一查发现这个博客消耗的宽带竟然比另一个主站还高(访问量远不及另一个),都是媒体文件尺寸过大惹的祸…!

有《WordPress 有哪些不同尺寸的缩略图,如何完全禁用&批量删除》一文详细介绍了咱 WordPress 都有哪些缩略图并如何处理它们。WordPress 默认的缩略有如下几个:

缩略图名称图像尺寸
缩略图( Thumbnail )(大小取决于媒体设置。默认为 150 像素)
中等大小( Medium )(大小取决于媒体设置。默认为 300 像素)
大尺寸( Large )(大小取决于媒体设置。默认为 1024 像素)
中大尺寸( Medium Large )768 像素
2x 中大尺寸( 2x Medium Large )1536 像素
2x 大尺寸( 2x Large )2048 像素
缩放( Scaled )2560 像素
WordPress 默认将生的缩略图

上表中前三个缩略图可以在仪表盘-设置-媒体设置中将媒体宽度和高度全部设为0关闭,其余的包括主题生成的缩略图则需要使用特定代码移除,详细见上述那篇文章。我也是近段时间在发现,WordPress 后台编辑器的媒体库加载的是上表中“Medium”缩略图,本博此前没用使用该缩略图,于是每次插入图片或者设置特色图片打开媒体库时,浏览器都会加载 80 张(默认数值)全尺寸的图像,会导致系统非常卡顿。因此,这个缩略图必须保留,且设置一个合理的尺寸。

设置好之后必须给 WordPress 生成该缩略图,否则打开媒体库加载以前的图像时仍然使用的是全尺寸文件。于是我试用Regenerate Thumbnails插件重新生成缩略图,不晓得是系统权限问题还是咋地,该插件无法正常工作。赫然发现插件主页上有这么句话:If you have command line access to your server, I highly recommend using WP-CLI instead of this plugin as it’s faster (no HTTP requests overhead) and can be run inside of a screen for those with many thumbnails. For details, see the documentation of its media regenerate command.官方都推荐用 WP-CLI,那还等什么?于是就有了本篇文章。

1. 什么是 WP-CLI(WordPress Command Line Interface)

WP-CLI 是 WordPress 的命令行界面工具,旨在通过命令行来简化和加速对 WordPress 网站的管理和操作。它允许用户执行诸如安装和更新 WordPress 核心、插件和主题,管理用户、执行数据库备份和迁移,以及生成静态内容等任务,而无需通过浏览器的图形用户界面(GUI)。WP-CLI 适用于开发者和系统管理员,希望通过脚本和自动化来提高工作效率,使得批量操作和复杂任务更加容易执行。

2. 在服务器上安装 WP-CLI

2.1 下载安装 WP-CLI

WP-CLI 是一个强大的工具,能大大简化 WordPress 站点的管理和维护。对于熟悉命令行的用户来说,使用 WP-CLI 可以显著提高工作效率。安装 WP-CLI 非常简单,可以通过以下步骤进行:

  1. 下载 WP-CLI: 在命令行中运行以下命令下载 WP-CLI 的 Phar 文件:curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar,如果你服务器“网不好”,也可以离线下载后通过 Ftp 手动上传;
  2. 验证下载: 确保下载的文件是可执行的:wp-cli.phar --info
  3. 将 WP-CLI 移动到全局可访问的位置: 将 wp-cli.phar 移动到 /usr/local/bin/wp,并赋予可执行权限:
    • chmod +x wp-cli.phar
    • mv wp-cli.phar /usr/local/bin/wp
  4. 验证安装: 运行以下命令验证 WP-CLI 是否安装成功:wp --info

/usr/local/bin/ 是一个在类 Unix 操作系统(如 Linux 和 macOS)中常见的目录,用来存放用户安装的二进制可执行文件。将wp-cli.phar放在该目录后,以后可以通过在终端中输入wp来直接使用 WP-CLI。

2.2 使用 WP-CLI 的注意事项

  • 备份:在进行重大操作(如数据库修改、核心更新等)之前,确保已备份站点数据。
  • 权限:确保你在执行命令时拥有足够的权限,特别是在修改文件系统和数据库时。
  • 环境:在本地开发环境中测试命令,确保不会对生产环境造成意外影响。

2.3 常见问题

  1. 命令找不到: 如果出现 wp: command not found 错误,确保 wp 命令所在路径已添加到系统的环境变量中。
  2. 权限问题: 如果遇到权限问题,可以使用 sudo 命令来提升权限,但要谨慎使用。另外操作前也请暂时关闭其他防护程序,比如宝塔的“系统加固”插件。
  3. 其他问题:如果出现了 JLT 警告,如Warning: JIT is incompatible with third party extensions that setup user opcode handlers.可以不用理会,毕竟咱偶尔用着玩意儿。

3. 使用 WP-CLI 给 WordPress 生成缩略图

使用 WP-CLI 重新生成 WordPress 网站中的缩略图,可以通过 wp media regenerate 命令来完成。这个命令会重新生成所有的媒体文件的缩略图,以确保所有图像尺寸都符合当前主题和插件的要求。以下是使用 WP-CLI 重新生成缩略图的步骤:

3.1 备份网站

在进行任何批量操作之前,最好备份你的网站,包括数据库和所有文件。这可以确保如果在操作过程中出现问题,你可以恢复到之前的状态。

3.2 进入 WordPress 安装目录

使用命令行进入你的 WordPress 安装目录,以下以装在宝塔面板的 Kevin's Space 为例,您各位做个参考:cd /www/wwwroot/shephe.com,WP 安装目录指的是装着 wp-admin、wp-includes 等文件夹那个目录。

3.3 重新生成缩略图(wp media regenerate)

  1. 这条命令重新生成所有媒体文件的缩略图:wp media regenerate
  2. 如果你只想重新生成特定媒体文件的缩略图,可以使用文件 ID:wp media regenerate 123 456 789,这通常用来测试
  3. 这个命令会自动确认、保留旧尺寸、仅重新生成缺失的 thumbnail 和 medium 尺寸的图片:wp media regenerate --yes --skip-delete --only-missing --image_size=thumbnail --image_size=medium

值得注意的是,这个工作会消耗大量的服务器资源,请保持理性和耐心,最好是在服务器空闲时操作。另外,请一定执行上边第 2 行先行测试一番再全量操作。Kevin 自己全程使用 root 用户执行命令(--allow-root),使得生成的缩略图的所有权变成了 root 用户,暂时还不清楚对使用有何影响,我感觉最好是把 wp-content 目录更改为原来的权限为好。

4. WP-CLI 的其他功能

WP-CLI 是一个强大的命令行工具,专门用于管理 WordPress 安装。它提供了许多功能来简化和自动化各种常见的 WordPress 任务。以下是一些主要功能:

  1. 核心管理
    • 安装和更新 WordPress 核心文件。
    • 检查和升级到最新版本或特定版本的 WordPress。
    • 下载特定版本的 WordPress。
  2. 插件管理
    • 安装、激活、停用和删除插件。
    • 更新单个或所有插件。
    • 列出已安装的插件及其状态。
  3. 主题管理
    • 安装、激活和删除主题。
    • 更新主题。
    • 列出已安装的主题。
  4. 数据库操作
    • 创建、备份和还原数据库。
    • 执行数据库优化和修复。
    • 运行自定义 SQL 查询。
  5. 用户管理
    • 创建、更新和删除用户。
    • 更改用户角色和权限。
    • 重置用户密码。
  6. 内容管理
    • 创建、更新和删除文章、页面和自定义文章类型。
    • 批量生成测试内容。
    • 导出和导入内容。
  7. 设置和配置
    • 查看和更新 WordPress 配置选项。
    • 管理永久链接结构。
    • 管理小工具和菜单。
  8. 媒体管理
    • 批量上传、删除和重新生成媒体文件。
    • 查看媒体文件信息。
  9. 多站点管理
    • 安装和管理多站点网络。
    • 管理多站点网络中的子站点。
  10. 缓存管理
    • 清除缓存(如果使用缓存插件)。
  11. 翻译管理
    • 安装和更新翻译文件。
  12. 配置和调试
    • 管理和调试 WP-CLI 配置文件。
    • 查看和设置常见的调试模式。
  13. 导入和导出
    • 使用 WordPress 导入器导入内容。
    • 导出 WordPress 内容。
  14. 生成静态内容
    • 生成静态网站(需要相关插件支持)。
  15. 命令扩展
    • WP-CLI 允许通过自定义命令进行扩展,开发者可以编写和添加自己的命令。
  16. 运行自定义代码
    • 通过命令行运行自定义 PHP 代码片段。

这些功能使 WP-CLI 成为一个非常灵活和强大的工具,适用于开发、部署和维护多个 WordPress 站点。通过 WP-CLI,用户可以高效地批量执行各种任务,从而节省大量时间和精力。

5. 设置文章插入的图片默认尺寸为原图

Kevin's Space 之前完全禁止了缩略图( Thumbnail )、中等大小( Medium )、大尺寸( Large )缩略图,因此编辑文章插入图片时默认插入原始图像,即全尺寸(Full)。现在开启这些缩略图时,据我观察当原始图像大于咱设置的大尺寸图象时,WordPress 默认使用该缩略图。

为了保证网页图像浏览质量和正确显示 EXIF 信息,我每次都要手动在图片-区块-分辨率中更改为全尺寸,相当不爽…以下代码实现将文章插入的图片默认尺寸为原图。

// 编辑文章插入图片时默认为“全尺寸”
function set_default_image_size() {
    update_option('image_default_size', 'full');
}
add_action('after_setup_theme', 'set_default_image_size');
利用七牛对象存储显示 EXIF,而 WordPress 自带剪裁会抹去这些信息

6. 更改 WordPress 后台媒体库加载的缩略图

有了这个操作,是不是感觉前面所有的工作都白干了?我也是快写完本文的时候才想到…不说了,就当瞎折腾了吧……emmmmm,不过我怎么折腾,在文章编辑器插入图片和设置特色图像时弹出的模态窗口中,加载的缩略图始终为Medium,无法被改成Thumbnail,所以也不算瞎折腾…吧?以下代码仅作用于仪表盘-设置-媒体库

// 设置后台“媒体库”加载的缩略图为 thumbnail
function custom_media_library_thumbnail_size() {
    // This filter changes the size of the thumbnail in the media library
    add_filter('admin_post_thumbnail_size', function() {
        return 'thumbnail'; // Change to your desired size (e.g., 'thumbnail', 'medium', 'large', etc.)
    });
}
add_action('after_setup_theme', 'custom_media_library_thumbnail_size');
1460 730 Kevin's
「用 WP-CLI 给 WordPress 网站重新生成缩略图」有 30 条评论
  • 夏小雪
    06/26/2024 at 01:04 回复

    這個插件多數是用在主題改了圖片比例的時候,就要重新生成。
    但是像我blog 已經幾個G的圖片了就隨意了,歷史包袱太重,不要隨意動他,哈哈哈。

    • 的头像
      Kevin
      06/26/2024 at 08:53 回复

      我也是几个G,所以才动,免得以后更多了就更麻烦了

  • 手滑段子
    06/20/2024 at 21:04 回复

    本地环境用来测试会很快,批量装插件等,太需要了

    • 的头像
      Kevin
      06/20/2024 at 21:26 回复

      我也是第一次用,从描述看确实很有用的样子……

  • 耳朵的主人
    06/16/2024 at 23:05 回复

    昨天我刚想重制缩略图,不想用插件,就找了段代码加到主题文件里去,好家伙,直接把我1核1G的云服干瘫痪了。

    然后买了台4核8G的倒进去重制,最后文章特色图全丢失了,还好多个心眼子,操作之前备份了一份数据,覆盖恢复。

    你这个我等下就拿来操作一下,站点图片一万多张,操作起来脑壳疼。

    • 的头像
      Kevin
      06/16/2024 at 23:08 回复

      其实我感觉也不是那么消耗资源,因为这个服务不是多线程的,图片多时间要的比较久而已

      请记得先想好到底要哪些缩略图,然后先生成一张或者一个文件夹试试再说

      • 耳朵的主人
        06/16/2024 at 23:12 回复

        嗯嗯,我就是求快,直接没看复制代码给到模版文件里去,保存,它就自动操作了,云服直接宕机,最后MySQL挂了,宝塔才能动。

        我用的不是Wp-Cli,就是教程网站找的野代码,哈哈,一会用你的这个方案操作。

      • 尝试保存COOKIE,929
        06/25/2024 at 17:46 回复

        测试通知

  • 小彦
    06/11/2024 at 18:15 回复

    WP厉害了,还有自己的CLI,都是一个大框架了

    • 的头像
      Kevin
      06/16/2024 at 23:08 回复

      那可不是,毕竟用户量这么大……

  • Jeffer.Z
    06/11/2024 at 16:50 回复

    我是重新生成缩略图插件,你这个输出,适合开个公号,还是很多人喜欢看技术文章的。

    • 的头像
      Kevin
      06/11/2024 at 16:54 回复

      有了ai我强的可怕?

      • Jeffer.Z
        06/11/2024 at 17:07 回复

        你不说谁知道你是Ai.主要是你有自己内容在里面,再说这输出频率,我觉得挺强的。

        • 的头像
          Kevin
          06/11/2024 at 17:14 回复

          有道理~~哈哈哈,我正在对本博做另外的处理,u will see

  • Lvtu
    06/11/2024 at 14:31 回复

    好吧,我都是直接用的原图,所以网站加载慢。。。

    • 的头像
      Kevin
      06/11/2024 at 16:55 回复

      我感觉你那边慢应该是宽带不够的原因哈哈哈,
      不过没关系,慢就慢点

      • Lvtu
        06/12/2024 at 22:36 回复

        嗯,先将就用着吧,哈哈~~~

    • 的头像
      Kevin
      06/11/2024 at 16:56 回复

      我转载了 你 手机使用公约,有ping 通么?

      • Lvtu
        06/12/2024 at 22:36 回复

        转哪了?我这边没看到...

        • 的头像
          Kevin
          06/12/2024 at 22:56 回复

          果果日记:

          https://chenguo.life/resources/%e6%89%8b%e6%9c%ba%e4%bd%bf%e7%94%a8%e5%85%ac%e7%ba%a6/

  • 山野愚人居
    06/11/2024 at 11:12 回复

    图片用的cdn,缩略图也是cdn上定义大小,感觉也方便!

    • 的头像
      Kevin
      06/11/2024 at 11:29 回复

      我的图片 在七牛CDN的,,这个主题调用了各种尺寸的 图片,

  • 皇家元林
    06/11/2024 at 10:58 回复

    这个啥意思?我之前已经生成的缩略图会自动删掉,然后重新生成缩略图吗?

    • 的头像
      Kevin
      06/11/2024 at 11:08 回复

      不是,是假设你需要使用新的缩略图……比如换了主题之类的,就需要对以前的图片重新生成缩略图

      • 皇家元林
        06/11/2024 at 11:10 回复

        哦哦,那我想把之前已经生成的缩略图删掉,怎么做最简单呢?

        • 的头像
          Kevin
          06/11/2024 at 11:16 回复

          https://www.shephe.com/website/disable-wordpress-generated-and-batch-deletion-images/#title-2
          看这个

        • 的头像
          Kevin
          06/11/2024 at 11:28 回复

          但是这么做只是从文件库中移除了……最好是用插件,Media Cleaner

  • S
    06/11/2024 at 08:47 回复

    直接全部设成1000然后full输出岂不一劳永逸。

    • 的头像
      Kevin
      06/11/2024 at 09:04 回复

      1000太小了哈哈哈哈,

  • obaby
    06/11/2024 at 08:45 回复

    这个工具功能还是蛮强大的

发表评论

请输入关键词…