WordPress カスタマイズ カスタマイズ 備忘録

プロモーションを含みます

プラグイン使わずに既にアップロードしたjpg画像をwebpに一括変換方法

メルカリ招待コード:

所要時間目安: 4

This session is using  IPv4  is established in

今日は2025年10月14日です。

目次に行く・戻る

今現在では、webサイト上の画像や写真などは、拡張子がjpgではなくwebpやavifが多くなってきました。webpやavifは従来のjpgに比べて画像劣化が少なくファイルサイズが小さくなります。よって、ページ表示速度が速くなることが期待できます。特に、画像を多く取り扱っているサイトにおいてはより効果を感じることと思われます。

そこで、以前からサイト運営をしてきてjpgなどの拡張子にて画像をアップロードしている場合は、FTPツールなどにて全ての画像をダウンロードして、ローカルで一旦保存し以下のサルワカ道具箱やSquooshなどのサイトを利用したり、アプリケーションにて画像をwebp変換後に再度アップロードし直しすなどの手間がかかると思われます。プラグインなどにおいても対応可能かもしれませんが、できる限りプラグインを使わずにしたい方も多いと思われます。

この記事を読む方へのオススメ

プラグインを使わずにjpg画像をwebp画像に一括変換する方法です。

WordPressにおいてはfunction.phpに関数などのコードを追加することで、後からある程度のカスタマイズが可能です。ある程度というよりかなりのカスタマイズなどができると思われます。

そこで、以下にfunction.php内に以下のコードを追加することで既にアップロードしてあるjpg画像やjpg写真を、サーバー上でWordPressに行わせることができます。

/**
 * 既存の JPG / PNG ファイルを WebP に一括変換(元画像は残す)
 * 実行トリガー:管理者が管理画面にアクセスしたとき(初回のみ)
 */

add_action( 'admin_init', 'convert_existing_images_to_webp' );

function convert_existing_images_to_webp() {
    // 管理者のみ実行
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    // 二重実行防止(1日に1回だけ)
    $last_run = get_transient( 'convert_existing_images_to_webp_last_run' );
    if ( $last_run ) {
        return;
    }
    set_transient( 'convert_existing_images_to_webp_last_run', time(), DAY_IN_SECONDS );

    $upload_dir = wp_get_upload_dir();
    $base_dir   = trailingslashit( $upload_dir['basedir'] );

    // jpg / jpeg / png を再帰的にスキャン
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator( $base_dir, RecursiveDirectoryIterator::SKIP_DOTS )
    );

    foreach ( $iterator as $file ) {
        if ( $file->isFile() ) {
            $ext = strtolower( $file->getExtension() );

            if ( in_array( $ext, array( 'jpg', 'jpeg', 'png' ), true ) ) {
                $file_path = $file->getPathname();
                $file_info = pathinfo( $file_path );
                $webp_path = $file_info['dirname'] . '/' . $file_info['filename'] . '.webp';

                // 既に webp が存在すればスキップ
                if ( file_exists( $webp_path ) ) {
                    continue;
                }

                // 画像読み込み
                if ( $ext === 'png' ) {
                    $image = @imagecreatefrompng( $file_path );
                    if ( $image ) {
                        imagepalettetotruecolor( $image );
                        imagealphablending( $image, true );
                        imagesavealpha( $image, true );
                    }
                } else {
                    $image = @imagecreatefromjpeg( $file_path );
                }

                if ( ! $image ) {
                    continue;
                }

                // WebP 生成(品質80)
                imagewebp( $image, $webp_path, 80 );
                imagedestroy( $image );
            }
        }
    }
}

上記は、WordPressの管理画面を開いた際に自動的に既にアップロードされているjpg画像やjpg写真をwebp形式の拡張子に一括変換するコードになります。

機能の概要としましては、以下のようになっています。

項目内容
対象ディレクトリwp-content/uploads/ 以下すべて
対象拡張子.jpg, .jpeg, .png
出力形式同名 .webp を生成(例:sample.jpgsample.webp
元画像削除せず残す
品質80(必要に応じて変更可)
実行タイミング管理者が管理画面を開いたとき、自動で1日1回だけ実行
二重実行防止set_transient() により1日1回のみ動作
セーフティ既に .webp が存在する場合はスキップ

使い方は、管理画面を開くことで1日に1回実行されるようになっています。

一度だけ即時実行したい場合は(もし「管理画面を開かなくても今すぐ変換を走らせたい」場合)、
以下の関数呼び出しを一度だけ追記し、実行後に削除して大丈夫です。

add_action( 'init', 'convert_existing_images_to_webp' );

※実行が完了しましたら、上記の1行は削除してください。

その他、上記コードの任意カスタマイズ部分としましては、以下になります。

  • 品質を変更したい場合: imagewebp( $image, $webp_path, 80 ); の 80 を 70〜90 などに変更。
  • 実行頻度を変更したい場合:DAY_IN_SECONDS を HOUR_IN_SECONDS に変更で1時間ごとに再スキャン可能。

各々において、あったカスタマイズしてみてくださいね。function.phpファイルのバックアップは先に必ず行ってからにしてくださいね。

最後にそれぞれの画像拡張子の特徴や違い(できること)などを以下にまとめてみます。

WebPJPEGPNGGIF
圧縮方式非可逆圧縮
可逆圧縮
を選べる
非可逆圧縮可逆圧縮可逆圧縮
透過処理×
表現できる色1670万1670万256〜1670万256
アニメーション
表示
××

Googleが開発した拡張子webpなので、Googleが作成した以下Squooshというサイトにてもwebp画像変換ができます。

あなたにおすすめ


Multiplex 広告

入学入社まであと…入学入社祝いはどんなPresent(プレゼント)でどのように過ごされますか?

ホワイトデープレゼントは以下などの豊富なキャンペーン商品から選ぶと良いと思います。

ブログサービスが始まってから:


カウントダウンタイマー

おすすめの記事一部広告

Total20


アドセンス336pxPC閲覧記事下表示1つ目コード

目次に戻る

よろしかったらシェアよろしくお願いします。

-WordPress, カスタマイズ, カスタマイズ, 備忘録

目次に戻る

目次に戻る


コメントを表示(0)

コメントを書く

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

新着コメント