wordpressのテーマファイルエディタで、function.phpが更新できない

Linux

WordPressでテーマのカスタマイズを行う際、よく使われるのが「テーマファイルエディタ」。特に functions.php は、テーマの機能拡張やカスタム処理を追加するために頻繁に編集されるファイルです。ところが、いざ編集して保存しようとすると「更新できない」「真っ白になる」「エラーが出ない」といった問題に直面する方も多いのではないでしょうか。

この記事では、functions.phpが更新できない原因とその解決策について、初心者でも分かるように詳しく解説します。加えて、WordPressの内部状態をチェックできる「サイトヘルス」機能の活用方法も紹介します。


1. なぜfunctions.phpをテーマエディタで編集するのか?

functions.php はテーマごとに用意されているPHPファイルで、WordPressの動作に影響を与えるさまざまな処理を追加できます。たとえば以下のようなコードを追記することでカスタマイズが可能です。

  • カスタム投稿タイプの追加
  • ウィジェットエリアの定義
  • 不要なスクリプトの削除
  • ショートコードの追加

テーマエディタから直接編集できる点は便利ですが、反面非常にデリケートでもあり、少しのミスでサイト全体がエラーになることもあります。


2. functions.phpが更新できない主な原因

functions.phpがテーマファイルエディタから更新できない原因は複数考えられます。ここでは代表的なものを紹介します。

2-1. PHPの構文エラーがある

最も多い原因のひとつが、編集した内容に構文エラー(文法ミス)がある場合です。たとえば以下のような例です:

add_action('init', function() {
    echo '初期化処理'; // ← セミコロンを忘れると構文エラーに
}

構文エラーがあると、保存時に画面が真っ白になったり、「重大なエラーが発生しました」と表示されることがあります。

2-2. ファイルやディレクトリのパーミッション(権限)

サーバー上の functions.php やテーマフォルダに適切なパーミッションが設定されていないと、書き込み権限がないとして保存できないことがあります。

たとえば以下のようなパーミッションが必要です:

  • functions.php: 644
  • テーマフォルダ: 755

2-3. WordPressのファイルエディタが無効になっている

セキュリティ目的で、wp-config.php でファイル編集機能を無効化しているケースもあります。以下のような記述があるとテーマエディタから更新できません:

define('DISALLOW_FILE_EDIT', true);

この行をコメントアウトまたは削除すれば、再びエディタから編集できるようになります。

2-4. サーバーのセキュリティ設定(WAF)

レンタルサーバーによっては、WAF(Web Application Firewall)というセキュリティ機能が働いていて、特定のコードの書き換えをブロックしていることがあります。ロリポップやエックスサーバーなどではよくある現象です。

この場合、WAFの一時的な無効化や除外設定が必要になります。


3. サイトヘルスツールで状態をチェックする

WordPressには「ツール → サイトヘルス」という便利な機能が用意されています。ここでは、現在のサイトの状態や不具合の原因を自動で診断してくれます。

functions.phpの問題とは直接関係がないように思われるかもしれませんが、実際にはREST APIエラーなどが原因で、テーマエディタ自体が正しく動作していない可能性もあるのです。

3-1. REST API に関するエラー例

サイトヘルスの「ステータス」タブで、以下のようなエラーが表示されることがあります:

REST API でエラーが発生しました

REST API は WordPress や他のアプリケーションがサーバーと通信する手段の1つです。たとえば、ブロックエディターの画面は投稿や固定ページの表示や保存のために REST API を使用しています。

REST API のテスト時に、エラーが発生しました:

REST API エンドポイント: https://server.muu.icu/wp-json/wp/v2/types/post?context=edit
REST API レスポンス: (http_request_failed) cURL error 28: Connection timed out after 10002 milliseconds

このようなエラーは、サーバーの外部接続制限や、DNS設定、SSLエラーなどが原因で発生することがあります。テーマエディタがREST APIに依存している場合、このエラーが間接的に影響する可能性があります。

3-2. 解決のヒント

  • サーバーのファイアウォール設定やDNSを確認
  • WAFを一時的に無効化して試す
  • PHPのバージョンが推奨環境になっているか確認
  • cURLやOpenSSLが有効かどうか確認

このようなサイト内部の状態を確認することで、functions.phpの保存やテーマエディタ全体の不具合の手がかりが見つかるかもしれません。

今回、function.phpが更新できない原因は、これでした。
こちらの記事で、解決方法を紹介しています。


4. エラー内容を表示するには?

WordPressはデフォルトではエラーを非表示にしており、白画面になっても原因が分からないことが多いです。エラー内容を表示するには、以下のようにwp-config.phpに設定を追加しましょう。

define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);

これにより、functions.phpにエラーがある場合は画面上に詳細なエラーが表示されるようになります。編集後は、セキュリティのために必ず元に戻しておきましょう。


5. エラーが出たときの復旧方法

万が一、functions.phpの編集ミスでサイトが表示されなくなった場合の復旧方法も知っておきましょう。

5-1. FTPやファイルマネージャーで直接修正

FTPクライアント(FileZillaなど)や、サーバーのファイルマネージャーから直接 functions.php を修正・元に戻すことができます。

5-2. 子テーマを使う

今後のリスク回避のためにも、テーマ本体ではなく子テーマを作成し、そちらのfunctions.phpにカスタマイズを追加するのがおすすめです。

5-3. バックアップから復元

JetpackやBackWPupなどのプラグインを使っていれば、過去の状態に簡単に復元できます。


6. おすすめの編集方法

テーマエディタは便利ですが、常にリスクが伴います。安全にfunctions.phpを編集するためのベストプラクティスを紹介します。

  • ローカル環境やステージング環境でまずテスト
  • FTP経由でバックアップを取得してから編集
  • 変更前後で php -l functions.php を使って構文チェック
  • 可能であれば、カスタムコードは専用のプラグインとして独立させる

7. まとめ

WordPressのテーマエディタからfunctions.phpが更新できない場合、構文エラー・パーミッション・設定ミス・サーバー側の制限といった複数の要因が考えられます。また、サイトヘルスツールを使うことで、REST APIエラーなど、見えない原因を発見できる可能性もあります。

サイトの安定運用のためにも、直接編集ではなく、子テーマやカスタムプラグインを活用することをおすすめします。


この記事が、functions.phpの編集トラブルを解決する一助となれば幸いです。サイトヘルスのチェックはトラブル予防の第一歩です。ぜひ定期的に確認してみてください。

 

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