“推奨サイズより大きい画像を指定してください”と言われたので画像をリサイズするプログラムを組んだ話

WordPress

ぬにょす(挨拶)。

多分、アイキャッチ画像が小さいんですよね…。

PHPでプログラムを組んで、ビャーッとリサイズしちゃいました。

<?php define('SITE_URL', 'http://example.com'); define('ROOT_PATH', '/var/www/wordpress'); define('NEW_WIDTH', 1280); /** WordPress のためのデータベース名 */ define( 'DB_NAME', 'wordpress' ); /** MySQL データベースのユーザー名 */ define( 'DB_USER', 'db_user' ); /** MySQL データベースのパスワード */ define( 'DB_PASSWORD', 'db_password' ); /** MySQL のホスト名 */ define( 'DB_HOST', 'localhost' ); $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($db->connect_error) { echo $db->connect_error; exit(); } else { $db->set_charset("utf8"); } $sql = "SELECT P.id, P.guid FROM wp_postmeta as M"; $sql .= " LEFT JOIN wp_posts as P ON M.meta_value = P.id"; $sql .= " WHERE M.meta_key = '_thumbnail_id'"; if ($res = $db->query($sql)) { while ($row = $res->fetch_assoc()) { $path = str_replace(SITE_URL, ROOT_PATH, $row['guid']); if (!file_exists($path)) { echo $row['id']; echo '[File Not Exists!]'; echo $path, PHP_EOL; } else { list($org_w, $org_h, $type) = getimagesize($path); $ratio = NEW_WIDTH / $org_w; if ($ratio > 1.0) { $new_w = floor($ratio * $org_w); $new_h = floor($ratio * $org_h); echo $row['id']; echo '[', $org_w, ',', $org_h, ']->'; echo '[', $new_w, ',', $new_h, ']'; echo $path, PHP_EOL; $org_image = null; switch ($type) { case IMAGETYPE_JPEG: $org_image = imagecreatefromjpeg($path); break; case IMAGETYPE_PNG: $org_image = imagecreatefrompng($path); break; } if (!$org_image) { echo ">> Can't load image.", PHP_EOL; } else { $canvas = imagecreatetruecolor($new_w, $new_h); imagecopyresampled($canvas, $org_image, 0, 0, 0, 0, $new_w, $new_h, $org_w, $org_h); switch ($type) { case IMAGETYPE_JPEG: imagejpeg($canvas, $path); break; case IMAGETYPE_PNG: imagepng($canvas, $path, 9); break; } imagedestroy($canvas); imagedestroy($org_image); echo ">> Resized!", PHP_EOL; } } else { echo $row['id']; echo '[', $org_w, ',', $org_h, ']->'; echo '[Keep!]'; echo $path, PHP_EOL; } } } $res->close(); } $db->close();
Code language: PHP (php)

その後、念のためRegenerate Thumbnailsを走らせて、Cocoon設定でキャッシュも削除して。

現在、サチコさんに再検証してもらってます。

これで警告が綺麗に消えてくれることを願います。

コメント

タイトルとURLをコピーしました