2026年8月20日
2026年8月20日
WordPressのUTF-8BOM問題を解決する方法
はじめに
WordPressサイトの管理や開発中に、突然文字化けや表示が乱れる問題に直面することがあります。その多くはファイルエンコーディングに関連するもので、中でもUTF-8 BOM (Byte Order Mark) 関連の問題はよく遭遇します。BOMは文字コードを指定するための先頭部分ですが、それが適切に処理されない場合、不具合が発生する可能性があります。
症状・背景
このテーマが必要になる主な場面:
- テーマやプラグインのアップデート後に文字化けや表示エラーが発生
- 新しいファイルを追加した際にサイト全体または特定ページで文字化け
- FTPなどで直接編集したファイルに問題が発生
- PHPのエラーログに
unexpected '['やunexpected T_STRINGなどの不明なエラー
手順・設定方法
ステップ1: ファイルエンコーディングを確認または変更
# BOMが含まれるファイルを探す
find /path/to/wordpress -type f -exec grep -IUbq '\xEF\xBB\xBF' {} \; -print
# BOMを削除するスクリプトの作成 (Bash)
#!/bin/bash
for file in $(find /path/to/wordpress -type f); do
if [[ $(head -c 3 "$file") == $'\xEF\xBB\xBF' ]]; then
sed -i '1d' "$file"
fi
done
# ファイルのエンコーディングをUTF-8に変更する (Bash)
for file in $(find /path/to/wordpress -type f); do
iconv -f UTF-8-BOM -t UTF-8 <"$file" >"${file}.tmp"
mv "${file}.tmp" "$file"
done
ステップ2: WordPressの設定を確認
# wp-config.php の文字コードを確認または変更
cat /path/to/wordpress/wp-config.php | head -n 1
# もしBOMが含まれている場合、以下のコマンドで削除
sed -i '1d' /path/to/wordpress/wp-config.php
ステップ3: テーマやプラグインの修正
# テーマのファイルを確認・修正 (Bash)
for file in $(find /path/to/wordpress/wp-content/themes/current-theme -type f); do
if [[ $(head -c 3 "$file") == $'\xEF\xBB\xBF' ]]; then
sed -i '1d' "$file"
fi
done
# プラグインのファイルを確認・修正 (Bash)
for file in $(find /path/to/wordpress/wp-content/plugins/current-plugin -type f); do
if [[ $(head -c 3 "$file") == $'\xEF\xBB\xBF' ]]; then
sed -i '1d' "$file"
fi
done
ステップ4: 結果の確認とテスト
# サイトを再読み込みして問題が解決したか確認
curl http://localhost/wordpress
注意事項
- ファイルを変更する前にバックアップを取ること
- テーマやプラグインの更新時にBOMの影響を受ける可能性があるため、定期的に確認すること
- FTPなどで直接編集したファイルは特に注意が必要
- WordPress内部の設定ファイルは慎重に扱うこと
まとめ
1. チェック: 定期的にサイト内の全ファイルをチェックし、BOMが含まれていないことを確認する。
2. バックアップ: ファイルを変更する前に必ずバックアップを取り、問題が発生した場合の対策としておく。
3. 再インストール: 問題が解決しない場合は、テーマやプラグインを一度削除してから再度インストールすることを検討する。
4. 保守: テーマやプラグインの更新時にBOMが影響を与えないように注意する。
5. 教育: 開発者に適切なファイルエンコーディングの知識を提供し、問題を未然に防ぐ。
関連記事: