这里有一种方法可以通过编程实现(大部分情况下)。
1: 设置媒体大小(例如:缩略图300x300和其余0x0,以防止WP生成缩略图以外的任何内容。)
2: 使用生成新图像WP CLI, 但在准备好之前,不要删除任何旧尺寸。或者,如果您确实没有保留任何已调整大小的图像,请跳过此操作。
$ wp media regenerate --skip-delete
3:搜索替换图像路径
WP CLI. 这会更新帖子和页面内容,这样您的网站上就不会有损坏的图像。
正则表达式需要如下所示。
(\\/wp-content\\/uploads\\/)([0-9]{4}\\/[0-9]{2}\\/)(.*)(-[0-9]{1,5}x[0-9]{1,5})(\\..{2,4})
Debuggex Demo
并将替换以下wp搜索:
$ wp search-replace \'(\\/wp-content\\/uploads\\/)([0-9]{4}\\/[0-9]{2}\\/)(.*)(-[0-9]{1,5}x[0-9]{1,5})(\\..{2,4})\' \'$1$2$3$5\' --regex
或者您可能有不同的上载文件夹,或者没有包含年/月文件夹。在这种情况下,你会有稍微不同的正则表达式
(\\/app\\/uploads\\/)(.*)(-[0-9]{1,5}x[0-9]{1,5})(\\..{2,4})
Debuggex Demo
你会跑的
$ wp search-replace \'(\\/app\\/uploads\\/)(.*)(-[0-9]{1,5}x[0-9]{1,5})(\\..{2,4})\' \'$1$2$4\' --regex
Just to be clear: this would make your load times horrible - all images would serve from their full-size file and not the smaller image.使用图像处理API/CDN交换图像服务器可能是一个好主意,这样这些问题就会消失:)
如果您至少保留了一个缩略图,如我给出的300x300示例,则需要运行稍微不同的正则表达式:
(\\/wp-content\\/uploads\\/)(.*)(-(?!(?:72))[0-9]{1,5}x(?!(?:72))[0-9]{1,5})(\\..{2,4})
Debuggex Demo
然后运行WP-CLI两次。第一个交换不是72x72缩略图的所有图像。后者将所有72x72缩略图更改为新的300x300缩略图
$ wp search-replace \'(\\/wp-content\\/uploads\\/)(.*)(-(?!(?:72))[0-9]{1,5}x(?!(?:72))[0-9]{1,5})(\\..{2,4})\' \'$1$2$4\' --regex
$ wp search-replace \'(\\/wp-content\\/uploads\\/)(.*)(-72x72)(\\..{2,4})\' \'$1$2-300x300$4\' --regex
4:现在删除所有未使用的图像:
$ wp media regenerate