Googleの生成AIのGeminiに件のコードを書いてもらったので、備忘録として残します。
PNGやWebpなども使用する場合はEWWW Image Optimizerプラグインを入れておけばいいのですが。
私が作っているサイトの一つに、JPGしかアップロードしないところがあり。プラグインをできるだけ減らしたいなーと。
Geminiさんに聞いてみたら、以下のコードを生成してくれました。
/**
* JPG画像をアップロード時に自動で圧縮する
*
* @param int $attachment_id 添付ファイルのID.
* @return void
*/
function auto_compress_uploaded_jpg( $attachment_id ) {
// 添付ファイルのメタデータを取得
$file = get_attached_file( $attachment_id );
$mime_type = get_post_mime_type( $attachment_id );
// JPGファイルの場合のみ処理を実行
if ( 'image/jpeg' === $mime_type ) {
// 圧縮品質を設定 (0〜100、100が最高品質だがファイルサイズは大きくなる)
$quality = 80;
// 画像を読み込む
$image = imagecreatefromjpeg( $file );
if ( $image ) {
// 圧縮して保存
imagejpeg( $image, $file, $quality );
// メモリを解放
imagedestroy( $image );
}
}
}
add_action( 'add_attachment', 'auto_compress_uploaded_jpg' );
これを子テーマのfunctions.phpに貼り付ければ完了です。
ちょっとどんなプロンプトでお願いしたか覚えていなくて、チャットも見失っちゃったんですが。
使用テーマはCocoonで、特に問題なく動いてくれています(*’ω’*)
という方は、お試しください^^