1

私は500以上の投稿があるワードプレスのブログを持っています。最初の投稿画像は常に幅 550 ピクセルで、高さは 300 ピクセルから 450 ピクセルの間です。

ブログのデザインが更新され、最初の投稿画像が幅 600px、高さ 350px から 500px の間になりました。最初の画像を手動でダウンロードし、サイズを 550 から 600 に変更しましたが、品質がわずかに低下しました。

最も簡単なのは、データベースを検索して置換することです。width="550" を探して width="600" に置き換えますが、高さに問題があります。これは、550 のような固定変数ではありません。

ワードプレスの画像に独自のテーブルがある場合、次のようなことが簡単にできます

update  wp_posts
set height = height*1.09;

しかし、ワードプレスの場合、情報は 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で幅に比例して高さを変更するにはどうすればよいですか?

4

1 に答える 1

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と対応する幅と高さがわかりました。これにより、画像要素の幅と高さを2つのステップで更新できます

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フィドルがあります。

于 2012-12-04T22:08:56.187 に答える