WordPressでは、テーマの切り替えやカスタム画像サイズの追加によって、過去にアップロードされた画像が現在の仕様に合わない場合があります。こうしたときに必要になるのが「サムネイル画像サイズの再生成」です。
この記事では、プラグイン「Regenerate Thumbnails」を使わずに、PHPコードで画像サイズを一括再生成する方法を紹介します。
なぜ画像サイズの再生成が必要なのか
WordPressでは画像をアップロードすると、登録された各サイズ(例:thumbnail、medium、large)で自動生成されます。しかし、テーマや設定の変更で新しいサイズを追加しても、すでにアップロード済みの画像には適用されません。そのため、古い画像にも新しいサイズを生成する必要があります。
一括再生成用のコード
以下のコードを一時的に functions.php
に追加することで、全画像のサイズを再生成できます。
function regenerate_all_thumbnails() {
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
$images = get_posts($args);
foreach ($images as $image) {
$fullsize_path = get_attached_file($image->ID);
if (file_exists($fullsize_path)) {
wp_delete_attachment_metadata($image->ID); // 古いメタ情報を削除
$metadata = wp_generate_attachment_metadata($image->ID, $fullsize_path);
if (!empty($metadata)) {
wp_update_attachment_metadata($image->ID, $metadata);
}
}
}
echo 'すべての画像サイズを再生成しました。';
}
// 一時的に以下を有効化して実行後は削除
// add_action('init', 'regenerate_all_thumbnails');
注意:上記のadd_action()
部分は一時的に有効化し、実行後は必ず削除またはコメントアウトしてください。
再生成される画像サイズとは?
add_image_size()
や設定画面で定義されている画像サイズが再生成対象になります。テーマやプラグインで追加されたカスタムサイズも含まれます。
実行後の確認方法
再生成後は、メディアライブラリから各画像の詳細を確認することで、登録されたすべてのサイズが正常に生成されているかチェックできます。また、開発者向けには wp_get_attachment_metadata()
で確認することも可能です。
WP-CLIを使った再生成も可能
もしSSHが使える環境であれば、wp media regenerate
コマンドを使うことで、より高速かつ安全に再生成が可能です。
wp media regenerate --yes
WP-CLIが利用できる場合はこちらの方が推奨されます。
まとめ
WordPressで画像サイズを一括で再生成する必要がある場合、プラグインに頼らずPHPコードで直接対応することも可能です。特に運用中のサイトでは、軽量な対応方法として便利です。
ただし、作業前にはバックアップを取ったうえで、処理後はfunctions.phpの記述を忘れずに削除しましょう。必要に応じてWP-CLIも併用することで、より効率的な再構築が可能です。