functions.phpを編集してWordPressのカスタマイズをするときに、記入ミスなどで構文エラーを出してしまうとダッシュボードにすらたどり着けなくなります。
エラーでブログ画面を真っ白にしてしまって、動悸や手の震えでまともに解決方法が見つけ出せなくなってしまう前にfunctions.phpの場所を確認しておきましょう。
すでに、真っ白にしてしまってこのブログにたどり着いている方は、FTPでfunctions.phpの確認まで移動してください。ブログが復旧することをお祈りします。
ほとんど私への戒め記事です。
WordPressのカスタマイズ
functions.phpを気軽にいじった悲劇
WordPressでカスタマイズをしようとするときに、やりたいことをネット検索して探します。
検索結果のページには「functions.phpに下記のソースをコピペしてください」と、かんたんに書かれていることでしょう。
WordPressを使い始めて半年ほど経っていた私は、phpをCSSやHTMLと同じ程度にしか考えていませんでした。
その考えがとんでもない悲劇をうみました。
【失敗】ダッシュボードから functions.phpをいじった
「外観」の項目を進んでいくと「テーマのための関数(functions.php)」という項目がありますので、ここからfunctions.phpを直接コードを書き加えることができます。
カスタマイズで見つけてきたコードをサクサクコピペしていきます。
functions.phpを保存して、ダッシュボードに戻ります。すると。
はい、画面が真っ白になってしまいました。
ここで編集に失敗すると、ダッシュボードに戻れなくなります。
「外観」からの編集はphpに慣れてからにしましょう。
「外観」
↓
「テーマ編集」
↓
「テーマのための関数(functions.php)」
エックスサーバーのバックアップを試した
WordPressを使うときにすべての作業をダッシュボード内でおこなっていたので、バックアップのデータを戻すしかないと考えました。
データベースの復元を試みましたが、復旧しませんでした。
WordPressのテーマを壊しているのにデータベースを復元しても直るわけがないのですが、そんな当たり前のこともわからないくらい気が動転していました。
ファイルマネージャからfunctions.phpを探す
このときはすでに夜になっており、だんだん時間が経っていきました。もう最終手段はテーマを再インストールするしかないと思っていました。
WordPressのテーマはJINを使っていますが、いったん他のテーマに切り替えてから再インストールすればおそらく直ったと考えられます。
しかし、直す道筋が見えてくると余裕が出てきたのか、functions.phpを壊すだけでテーマの再インストールをすることに違和感を感じました。
今後のことも考えて、functions.phpをファイルマネージャから探すことにしました。functions.phpを元どおりに編集することができれば、WordPressのテーマを復旧させることができます。
エックスサーバーはインフォパネルから、かんたんにファイルマネージャに入ることができます。
しかしファイルマネージャの中の階層を見たときに、何もわからないところから自力で探すのは無理だと感じました。
Twitterに助けを求めると、ひちょこ(@hichocosan)さんが数分で答えを教えてくれました。
FTPでfunctions.phpの確認
/(WordPressがインストールされているドメイン)
/public_html
/wp-content
/themes
/(テーマ名)
/functions.php
画像はエックスサーバーのFTPです。どのサーバーもFTPにログインすれば同じように探すことができます。
対象のドメインを選択します。当サイトは「slowlylastspurt.com」ですのでここを選択しました。
public_htmlを選択します。
wp-contentを選択します。
themesを選択します。
JINの子テーマを使用していますので、jin-childを選択します。使用するテーマによって名称が変わります。
カスタマイズの予定がなくても子テーマを使いましょう
functions.phpがありますので、元どおりに編集しましょう。
場所がわかってから3分でWordPressのテーマは復旧しました。
Search Consoleのサイトマップエラー(後日談)
翌日サーチコンソール(Search Console)のサイトマップがエラーになっていることに気づきました。
緊急な案件ではありませんが、精神衛生上良いものではありませんので、のんびり調べました。
Google XML Sitemapsを使ってサイトマップを送信していますので、まずプラグインを疑いました。
ネット上にはバージョンダウンで直る、新しいバージョンではサイトマップの位置が変わっているから違うファイルをサーチコンソールに送信するなど、ネットの情報が錯綜していて振り回されました。
Google XML Sitemapsの最新バージョンにして時間がかなり経っているのに、急にサイトマップがエラーになるのもおかしいので、セオリーどおり直前の変更を疑うことにしました。プラグインもバージョンを古くしておくと気持ち悪いですので最新に戻しておきました。
phpの軽微なエラー
functions.phpの構文を穴が開くほど、眺めます。
すると、functions.phpの記述の中でおかしいところがありました。
phpの命令は、<?php 命令 ?>で囲まれていますが、修正したfunctions.phpにはなぜか「?>」がありませんでした。
追記して、サイトマップを再送信するとエラーはなくなりました。
まとめ
functions.phpは少し間違えるだけで、大変なことになります。
「コピペするだけで」という甘い言葉に惑わされないように、慎重にカスタマイズするようにしましょう。
管理画面内にある「外観」からfunctions.phpを編集することは、強く推奨しません。