- 実践 WordPress ホーム
- メディア管理
WordPress でメディア画像の Exif 情報を削除する方法
WordPress でメディア画像の Exif 情報・メタデータを削除する方法をご紹介します。
Exif とは?
Exif は EXchangeable Image File format の略で、撮影・録音に関するメタデータを含む写真や音声などのファイルフォーマットです。 写真の場合は撮影の日時や場所の他にカメラの機種・設定などの情報が含まれます。
日本の富士フイルムが開発し、当時の日本電子工業振興協会 (JEIDA) で規格化したそうです。 1995 年 10 月にバージョン 1.0 がリリースされ、 2023 年 5 月にはバージョン 3.0 がリリースされています。
macOS での Exif 表示のサンプル:
なぜ WordPress で画像の Exif 情報を削除すべきか?
Exif には写真撮影時のさまざまな情報が含まれます。 中でも場所の情報は撮影者のプライバシーやセキュリティ上のリスクに繋がることがあります。
そのため、不特定多数のユーザーが画像を閲覧できる SNS では画像の Exif 情報が自動で削除されることが一般的です。
WordPress の場合、デフォルトではアップロードされた画像の Exif 情報は削除されません。 WordPress にスマートフォンやデジタルカメラで撮影した写真の画像をアップロードすると、意図せず自宅などの場所が外部に漏れてしまう可能性があります。 自宅などで撮影した画像をアップロードする可能性のある場合は、あらかじめ WordPress 側で Exif 情報を削除するように設定しておくことで万が一のプライバシーやセキュリティ上のリスクを減らせます。
A. プラグインを使う方法
多くのプラグインがありますが、人気の EWWW Image Optimizer というプラグインが定番です。
EWWW Image Optimizer – WordPress プラグイン
2024 年 9 月時点で 100 万インストール以上となっており、画像系のプラグインの中で最も多く使われているもののひとつです。
関連ページ: WordPress でかんたんに画像最適化を行えるプラグイン EWWW Image Optimizer
EWWW Image Optimizer で Exif 情報を削除する設定
インストールから設定するまでの流れを説明します。
まずは管理画面から「プラグイン」→「新規プラグインを追加」を開き、プラグイン名で検索してインストール→有効化します。
有効化が完了したらメニューに「設定」→「 EWWW Image Optimizer 」という項目が追加されているのでクリックします。
クリックしたら EWWW Image Optimizer の設定ページが開きます。
「メタデータを削除」という項目にチェックが入っていることを確認します。 入っていなければチェックを入れて「設定を保存」ボタンをクリックします。
設定後に新たにアップロードされた画像については自動的に処理が行われます。
すでにアップロード済みの画像に対して Exif 情報の削除処理を行う場合は、設定ページ上部の「 Optimize Local Images 」ボタンをクリックします。
同様の処理はメディアライブラリのテーブル表示でも可能です。 対象のファイルにチェックを入れて、「一括操作」のセレクトボックスで「一括最適化」を選択して「適用」ボタンをクリックします。
B. プラグインを使わない方法
WordPress.org のプラグインを使わない方法です。
画像系のプラグインはサイトによっては機能過多なことがあります。 ちょうどよいプラグインが見つからない場合などはこちらの方法を検討するとよいと思います。
基本的には、画像ファイルから画像情報を抽出して再度上書き保存すれば Exif 情報を削除することができます( Exif 情報だけの削除を試みるよりもこのアプローチの方が実装がシンプルで済みます)。
以下に、メディアとして画像がアップロードされたときに自動的に Exif 情報を削除するプラグインのサンプルをご紹介します。 対象とするファイルフォーマットは JPEG 、 PNG 、 WebP の 3 つです。
wp-content/plugins/exif-remover/exif-remover.php
:
<?php
/*
* Plugin Name: Exif Remover
* Description: メディアに画像がアップロードされたときに EXIF データを自動削除する。サポート対象フォーマット: JPEG / PNG / WebP 。
* Version: 0.1.0
*/
defined( 'ABSPATH' ) || exit;
/**
* 画像アップロード時のアクションフック: Exif 情報を削除する
*/
add_action('add_attachment', function ($attachment_id) {
try {
$result = exif_remover_remove_exif($attachment_id);
if ($result !== true) {
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log("Exif Remover Result for ID {$attachment_id}: {$result}");
}
}
} catch (Exception $e) {
error_log('Exif Remover Error: ' . $e->getMessage());
}
});
/**
* 画像の EXIF 情報を削除する
*/
function exif_remover_remove_exif($attachment_id) {
$path = get_attached_file($attachment_id);
if (!file_exists($path)) {
return 'ファイルが見つかりませんでした';
}
$type = exif_imagetype($path);
switch ($type) {
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($path);
imagejpeg($image, $path, 100);
imagedestroy($image);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($path);
imagepng($image, $path, 9);
imagedestroy($image);
break;
case IMAGETYPE_WEBP:
$image = imagecreatefromwebp($path);
imagewebp($image, $path, 100);
imagedestroy($image);
break;
default:
return '対応していないファイルフォーマット';
}
return true;
}
この PHP ファイルを wp-content/plugins/exif-remover
ディレクトリの下に設置すれば WordPress がプラグインとして認識します。
有効化すればその後アップロードされたファイルに対して Exif 情報削除の処理が自動で行われるようになります。
Note
なお、この実装ではアップロード済みの画像の Exif 情報を削除することはできませんが、フックを利用するコードを少し追加すればアップロード済みの画像に対して同様の処理を適用することもできます。
このコードを GitHub に置いたので動かしてみたい場合はご利用ください。
注意点
なお、プラグインを使う場合でもプラグインを使わずカスタムコードを書く場合でも、 Exif 処理機能が正しく動作するには、サーバーの PHP が画像処理機能をサポートしている必要があります。
レンタルサーバーの PHP の設定やバージョンによっては Exif 削除処理が利用できなかったり、利用できても対象フォーマット(拡張子)が制限される場合があるため注意してください。
確認時のバージョン
- WordPress
6.6.2