【解決】WordPressで日本語が消える現象が発生。原因は過去のプラグインの残骸だった

ネット/WEBサービス
記事中に広告が含まれています。
記事中に広告が含まれています。

WordPressで記事を保存する際、入力したはずの日本語だけが消えてしまうという現象が発生。

プラグイン全停止、データベースの確認、テーマの切替えをしても原因が特定できず。
最終的に判明した原因は、過去に削除したはずのプラグインが書き残した「設定ファイルの残骸」だった。

この記事では、同様のトラブルで悩んでいる方に向けて、

  • 日本語だけが消えて保存される現象の具体的な症状
  • 自力での調査が手詰まりになった経緯
  • サーバーサポートの助言とAI(Gemini)を活用した解決までのプロセス

を詳しく記録しています。

 

スポンサーリンク

WordPressで日本語が保存できなくなる

ある時、WordPressで運用している当ブログで、テーマ(Cocoon)内の設定変更をしていた。

項目の設定をして保存ボタンを押すと、入力した内容のうち日本語の部分だけが更新後の画面で丸ごと抜け落ちていた。

半角英数字などはそのまま残り、日本語だけが消えた状態で保存される。

 

最初はテーマの設定画面の不具合だろうと考えた。

ところが、念のために記事の新規作成や既存記事の更新を試してみたところ、そこでも同じ現象が起きていることに気づいた。

 

現象を確認していくうちに、これがクラシックエディタ(Classic Editorプラグイン)使用時に限定された症状であること、そして記事タイトルも本文も、保存するたびに日本語だけが消えてしまうことに気づいた。

それどころか、すでにクラシックエディタで作成して公開した記事をクラシックエディタで編集しても、日本語だけが消えて保存されるようになった。

 

スポンサーリンク

原因を探る

最初にテーマの設定画面でこの現象を確認したので、まず疑ったのはテーマ(Cocoon)自体の不具合やバグ。

Cocoonの公式フォーラムでアドバイスを受けながら、原因の切り分け作業を進めていった。

 

Classic Editor以外のプラグインを全停止しても解消せず。

データの保管場所であるデータベース(MySQL)の設定も確認。

データベースに関する知識はなかったので、フォーラムでアドバイスを受けながら設定を確認するも、設定に不審な点は見当たらない。

 

このあたりで、上にも書いたように記事投稿そのものにも現象が発生することに気づき、フォーラムで話すうちに、テーマの問題ではないかもしれないと疑い始める。

WordPressのデフォルトテーマに切り替えてもやはり発生したため、
「プラグインを止めても変わらない、データベースは正常、テーマも関係ない。」
という結果となり、ここでトラブル解消への道は完全に頓挫してしまった。

フォーラムの方々にはご迷惑をおかけしました…

 

Geminiの活用、ロリポップサポートへの相談から解決へ

ブロックエディタでは正常に保存できていたため、しばらくは騙し騙し運用していた。

新規記事はブロックエディタで作成し、過去記事はプラグインで変換して対応していたが、作業の煩雑さに次第にブログの更新頻度は落ちていった。

 

解決の糸口が見えないまま月日が流れる間に、世の中では生成AIが劇的な進歩を遂げていた。

もしかして今のAIなら解決できるのではないかと思い立ち、これまでの経緯をGeminiに相談してみることにした。

 

一つひとつGeminiからの提案を試すものの、解決せず。

最終的にGeminiは、サーバーの問題ではないかと判断し、ロリポップのサポートへの依頼を提案して、そのための文章を提示してきた。

 

WordPress自体の不具合はロリポップのサポート対象外であることは承知していたが、サーバー設定の観点から何かヒントが得られるかもしれないと考え、これまでの調査結果を添えてメールを送る。

サポートからの返信は以下のとおりだった。

 

「wordpress」>「wp-config.php」ファイルに以下のような記述がございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━
mb_internal_encoding(“EUC-JP”);
mb_convert_variables(
((mb_http_output() != ‘pass’) ? mb_http_output() : mb_internal_encoding()),
“ASCII,JIS,EUC-JP,eucJP-win,UTF-8,SJIS,SJIS-win”,
$_POST
);
━━━━━━━━━━━━━━━━━━━━━━━━━━

投稿する時にエンコーディング自動検出の順序で EUC-JP が UTF-8 より先に並んでいるため、
UTF-8の日本語テキストがEUC-JPと誤判定され、変換後に消失しているようでございます。

 

 

wp-config.phpはWordPressの最も重要な設定ファイル。

たしかにwp-config.phpの冒頭に、デフォルトには存在しない記述があった。

ini_set("output_buffering","on");
ini_set("mbstring.encoding_translation","off");
ini_set("output_handler","mb_output_handler");
ini_set("default_charset","UTF-8");
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
ini_set("mbstring.http_output","UTF-8");
ini_set("mbstring.http_input","auto");
ini_set("mbstring.substitute_character","none");
if (function_exists("mb_http_output") &&
function_exists("mb_internal_encoding") &&
function_exists("mb_convert_variables") ) {
define( 'WPCACHEHOME', '/home/users/2/lolipop.jp-****************/web/wordpress/wp-content/plugins/wp-super-cache/' );
mb_convert_variables ( ((mb_http_output() != 'pass') ? mb_http_output() : mb_internal_encoding()), "ASCII,JIS,EUC-JP,eucJP-win,UTF-8,SJIS,SJIS-win", $_POST );
}

自分で書いた覚えはまったくない。

これをそのままGeminiに投げたら、この部分を全削除するといいとのことだったので、削除するとようやく日本語が保存できるようになった!

いきなり削除せず、コメントアウトで試しましょう。wp-config.phpを編集するときは事前にバックアップも忘れずに。

 

犯人は過去にインストールしたプラグイン

原因はwp-config.php内の上記のコードだったわけだけど、そもそもなぜこのコードが書き込まれていたのか?

上記コードの中に「wp-super-cache」の記述があるのがわかる。

犯人はかつて導入していたキャッシュ系プラグイン「WP Super Cache」によって書き込まれていたものだった。

 

このプラグインは、設定を有効にするとWordPressの根幹である wp-config.php や .htaccess を自動的に書き換えるようだ。

たしかに以前このプラグインをインストールしていた記憶はある。

その後アンインストールしたものの、本体を消しても設定ファイルに書き込まれた「自動変換のコード」だけが残っていたのだ。

 

このコードにより、保存されるデータを「ASCII → JIS → EUC-JP → UTF-8」という順番で自動判別し、変換しようとする仕組みになっていた。

現在のWebの世界では「UTF-8」が標準だが、この古いコードは「EUC-JP」を先に判別しようとする。

その結果、日本語が「これはEUC-JPだ」と誤判定され、変換に失敗してデータが消えていた、ということのようだ。

以前に入れたプラグインの「残骸」が、後にPHPのバージョンを上げたために最新のWordPress環境とコンフリクトを起こしていた、というのが真相のようだ。

そもそもCocoonでは高速化機能が標準搭載されているため、WP Super Cacheのインストールは不要。

 

 

まとめ:今回のトラブルから学んだこと

今回の「日本語が保存できない」という謎の現象は、過去に使っていたプラグイン「WP Super Cache」の残骸が wp-config.php に残り続け、それが最新のPHP環境と衝突したことが原因だった。

自力での調査では解決不可能だったものが、Geminiの助言を得てロリポップのサポートに相談したことで、ようやく解決に辿り着くことができた。

 

今振り返ってみれば、wp-config.php の内容をそのままGeminiに丸投げして解析を依頼していれば、もっと早く解決していたかもしれない。

しかしロリポップに依頼するところまでいかなければ、そもそもwp-config.phpに原因があると気づけなかったかも…

 

それにしても、ロリポップは本来WordPress自体の不具合はサポート対象外であるにもかかわらず、サーバー設定の観点から wp-config.php の中身まで詳細に調査し、的確なアドバイスをいただけたことには、感謝の言葉しかない。

また、今回の件で痛感したのは、
「プラグインを削除すれば、それで万事解決というわけではない」
ということ。

削除したはずのプラグインの残骸が、後に動作に影響することがある。

たまには設定ファイルの奥深くまで大掃除をする意識が必要だと身をもって学んだ。

似たような症状で悩む方の参考になればと思う。

 

 

タイトルとURLをコピーしました