まずは結論から
変更したPHPのバージョンにおいて「廃止」「非推奨」となってしまった古い記述を「削除(または非表示)」「修正」することで問題が解決されました。
対象となるクライアントのホームページはTwenty Fifteen(2015年のワードプレスデフォルトテーマ)を、子テーマなしで直接ゴリゴリにカスタマイズして制作されたもので、5年以上、ワードプレスもプラグインもテーマもPHPも更新されていない放置状態でした。今回は実際に発生したエラーへの対処をご紹介します。
作業の前に行ったこと
- ダッシュボード(一般設定)で管理者メールアドレスを自分のメールアドレスに変更
- ダッシュボード(ツール→エクスポート→すべてのコンテンツ)からバックアップを取る
- FTPソフト(FFFTPやFileZillaなど)でバックアップを取る(ファイルを直接アップロード、ダウンロードできるように準備する)
- Dreamweaver(ドリームウィーバー)やTeraPadなどのテキストエディタでPHPファイルが編集できる環境を作る(使用中テーマの中のPHPファイルは全てダウンロードしてリライトできる状態にしておく)
- サーバー管理画面からPHPバージョンを変更(アップしたりダウンしたり)できる状態にしておく
作業の内容と手順
- PHPのバージョンは「5.6.40」から「7.4.33」に変更
- ワードプレスのバージョンは「4.8.6」から「6.3.1」に変更
- 未使用のテーマを全て削除
- サーバー(エックスサーバー)でPHPのバージョンを「7.4.33」に変更
- ダッシュボードからワードプレス「6.3.1」をインストール
- プラグインをすべて更新
- エラーメッセージを受信する
- エラーへの対応
- エラーメッセージがホームページの数カ所に表示される
- エラーへの対応
メールで受信したエラーメッセージへの対処
メール本文の「エラー詳細」から抜粋
...wp-content/themes/テーマの名前/functions.php:592
functions.phpの592行目でエラーが発生していました。
このエラーメッセージは管理者メールアドレス宛に「サイトで技術的な問題が発生しています」という件名でワードプレスから送信されたメールに記載されていました。
PHP7.2で非推奨となった「create_function()」「remove_action()」をコメントアウト
変更後のPHPバージョンのルールに則り「正しく書き換える」という方法もあるかと思いますが、まずはクライアントのホームページが一刻も早く正常に表示されることを優先しました。テーマがゴリゴリにカスタマイズされている場合、エラーの種類や数が多岐にわたる可能性も考えられます。今回、functions.phpにおけるエラーは二箇所でした。
修正前のコード
//本体のアップデート通知を非表示
add_filter('pre_site_transient_update_core', create_function('$a', "return null;"));
修正後のコード
//本体のアップデート通知を非表示
//add_filter('pre_site_transient_update_core', create_function('$a', "return null;"));
上記のようにfunctions.phpの592行目をコメントアウトで非表示にすると、次のエラーメッセージには…
...wp-content/themes/テーマの名前/functions.php:596
596行目でエラーが発生しているとのこと。
修正前のコード
//バージョン情報非表示
remove_action(‘wp_head’,’wp_generator’);
修正後のコード
//バージョン情報非表示
//remove_action(‘wp_head’,’wp_generator’);
とりあえず今回は、functions.phpの二箇所でエラーが発生していました。
両方とも非表示にすることで問題が解決されました。
ホームページに表示されたエラーメッセージへの対処
ホームページでは、プラグイン「Custom Post Type UI」によって作成されたカスタム投稿に関連する「投稿詳細ページ」「投稿一覧ページ」「最新の投稿(ブログサイドバー)」でエラーメッセージが表示されていました。
ホームページに表示されたエラーメッセージの一例
...wp-content/themes/テーマの名前/template/content-voice.php:13
「template」フォルダの中に「content-voice.php」というファイルがあり、その13行目の記述に問題があることを知らせてくれています。
...wp-content/themes/テーマの名前/template/archive-voice.php:35
「template」フォルダの中に「archive-voice.php」というファイルがあり、その35行目の記述に問題があることを知らせてくれています。
シングルクォーテーションで名前キー(タームやスラッグ名)を囲む
シングルクォーテーションとは
‘
↑のこと。
名前キー(タームやスラッグ名)をシングルクォーテーションで囲むことで、次々に問題が解決されていきました。
A.修正前のコード
get_template_part( 'template/content', voice );
A.修正後のコード
get_template_part( 'template/content', 'voice' );
B.修正前のコード
<?php elseif(is_single):
B.修正後のコード
<?php elseif('is_single'):
C.修正前のコード
<?php get_sidebar(column); ?>
C.修正後のコード
<?php get_sidebar('column'); ?>
D.修正前のコード
'show_count' => true,
D.修正後のコード
'show_count' => 'true',
他にも山ほど、同様の修正を行い、最終的には無事に全ての問題が解決しました。
ワードプレスの保守・管理を引き受けることになった理由と背景
この作業を依頼いただいたクライアントのホームページは、2016年に別の業者が制作したものでした。
クライアントはその業者に1年間サイトの保守・管理を任せていたものの「ほんの少しの修正なのに、その都度多くの費用を請求される」という理由で関係を終わらせていました。
このように「制作した人と連絡がとれない」「制作した人と関わりたくない」「管理者が移動・退職した」などの理由で、ホームページを作った人と、現在保守・管理を行っている人が異なるケースはよくあります。
そしてかなり高い確率でワードプレス、プラグイン、テーマ、PHPのバージョンを更新せずに使用しているケースがあります。
クライアントは60代の個人事業主で、WEBに関する知識や技術を持っていません。
約5年間、編集することを許されていた「コラム」「お客様の声」だけを、ワードプレスで更新していました。
そして今年、提供するサービスの価格変更や新しいサービスの開始などでホームページの改修が必要になり、知人を介して私のことを知り、相談をいただく流れとなりました。
見ず知らずの制作会社が、ワードプレスのテーマをゴリゴリにカスタマイズして作られたホームページの保守をお願いされると「嫌な予感」と「胸騒ぎ」で不安に襲われます。
最新のワードプレスは放置していても自動で更新される
ワードプレスはバージョン5.5以降、インストールしたプラグインを自動更新できるようになりました。そしてバージョン5.6以降は、ワードプレス自体の更新が自動で行われる仕様になりました。
つまり、今後ワードプレスを(もしかしたら半永久的に)放置していても「まぁ、大丈夫っしょ」ということです(PHPのバージョンアップは1年か2年に1回くらいのスパンで必要になるかもしれませんが…)。
これは私の個人的な意見ですが、高齢の方や、パソコンスキルに自信のない方が、少人数で運営されるホームページは、もっとシンプルに制作するべきだと思っています。
HTMLの知識がなくても「それなりに見栄え良くコンテンツを更新できる」のがワードプレスやムーバーブルタイプといったCMS(コンテンツ・マネジメント・システム)の優れているところです。
ここ1、2年の間に、ワードプレスの性能は格段に良くなりました。
ワードプレスやPHPのバージョンでお困りの際は、お気軽にご相談ください。
追伸
今おすすめの一冊
2024年10月19日から全国で公開されているドキュメンタリー映画『五香宮の猫』の想田和弘監督の著書『なぜ僕はドキュメンタリーを撮るのか(講談社現代新書)』。
これを読めば、あなたの観察眼がこれまで以上に起動すること間違いなしです。
もしこの記事が役に立ったときは
埼玉県越谷市に向かって「ナイスだぜ、大橋プランニング。ホームページを新規で制作するとき、リニューアルするときが来たら、お前のことを必ず思い出すぜ」と囁いていただけると幸いです。
全国どこでも、メールやビデオ通話でのやり取りだけで、ご自身で手軽に自宅からでも更新することのできるホームページを制作します。
ちなみに、今のイチオシは「ワードプレスのホームページ制作」です。
お値引きさせていただきます。