我有一个包含超过500个帖子的wordpress博客。第一个后期图像总是550px宽,高度在300px到450px之间。
博客设计已更新,第一个帖子图片现在宽度为600px,介于350px和500px之间。我已经手动下载了第一张图片,并将它们从550张调整为600张,但质量稍有不好。
最简单的方法是在数据库中搜索和替换。寻找width =“550”并将其替换为width =“600”,但是高度存在问题。这不是固定变量,如550。
如果wordpress图片有自己的表格,我可以简单地做一些像
这样的事情update wp_posts
set height = height*1.09;
但是在wordpress的情况下,这是无法做到的,因为信息存储在post_content中,如下所示:
<img class="alignnone size-full wp-image-4352" title="Image Title" src="http://www.website.com/wp-content/uploads/2012/12/image.jpg" alt="image" width="550" height="351" />
如何在mysql中按宽度的比例改变高度?
答案 0 :(得分:1)
这是一个非常棘手的问题。但这也是一个有趣的问题。
无论如何,这就是它。要从post_content图像中提取宽度和高度,请创建视图
create view temp_images (id, width, height) as
select id,
ExtractValue(post_content, '/img/@width'),
ExtractValue(post_content, '/img/@height')
from wp_posts
where post_content like '<img%'
and ExtractValue(post_content, '/img/@width') = 550;
你不需要你的宽度,但如果你想玩,它就在这里。 现在,您有图像帖子的ID和相应的宽度和高度。这样,您可以分两步更新图像元素的宽度和高度
update wp_posts, temp_images
set post_content = UpdateXml(post_content, '/img/@width', 'width="600"')
where wp_posts.id = temp_images.id;
update wp_posts, temp_images
set post_content = UpdateXml(post_content, '/img/@height',
concat('height="', round(height * 1.09), '"'))
where wp_posts.id = temp_images.id;
最后清理,当然
drop view temp_images;
最后但并非最不重要的是,这里有SQL Fiddle用于测试和播放。