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. 教育: 開発者に適切なファイルエンコーディングの知識を提供し、問題を未然に防ぐ。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ