blog ブログ
こんにちは!デザイナーのasaです。
弊社制作のサイトのほとんどをWordPressで構築しているのですが、その中でフォームについてはプラグイン「MW WP Form」を利用しています。
がしかし開発者のキタジマタカシ氏によると、2023年9月にプラグインのクローズに動くとのツイートが…
とりあえず、Smart Custom Fields と MW WP Form はクローズに向けて動こうと思います。どちらも公式ディレクトリでのユーザー数が一定を超えていて自分ではクローズできないということみたいなので、ちょっといついつにクローズしますと名言はできませんが、一応そういう方向性でいこうと思います。
— キタジマタカシ🐒Snow Monkey/unitone開発者 (@inc2734) September 9, 2023
幸いプラグインのメンテナンスを「株式会社Webの相談所」さんが引き継いでくれるとのことで、すぐにプラグインが廃止されることはなさそうですが、あくまで脆弱性対応のみで新しい機能の追加等は行わず、MW WP Formの採用は控えるようアナウンスされてます。
これを期に「Contact Form 7」に切り替えていくこととなったのですが、数が多いためなかなかに時間がかかりそう。さらに「MW WP Form」も2024年2月にはphp8.0以上が必須条件に…
弊社が管理しているサイトのほとんどがPHP7.4だったため、まずはPHPを8系にあげ、その後フォームを切り替えていくことにしました。
そこで試しにひとつサイトをPHP8にあげてみたところ、エラーが発生!?ということで今回はそんなphpのエラーについて紹介します。
目次
PHP8で発生するエラーとは?
PHPバージョンアップによるエラーに対応してわかったのは、簡潔に言うと「記述のルールが厳しくなった」ということ。これまでPHP7では何となく見過ごされていたことが、PHP8では許してくれなくなりました。
もちろん非推奨になった関数がひっかかってエラーが発生するパターンもありますが、大半はこの厳しいルールによるものでした。
その中でもっとも多かったのが、変数や配列キーの未定義によるエラーです。
Warning: Undefined variable $〇〇 in…
よく見かけたのが、”Warning: Undefined variable $〇〇 in…”というエラー。これは$〇〇の変数が未定義ですよというエラーです。
$postID = get_query_var('postid');
get_query_var(‘postid’)で取得された値が未定義だった場合の処理がかかれていないためエラーとなります。なので未定義の場合の処理を追加してあげないといけません。
$postID = get_query_var('postid') ?? null;
get_query_var(‘postid’)の値が未定義だった場合、nullを代入して返すようにしました。
他にもisset関数を使って同様の処理を行うことも可能です。
$postID = isset(get_query_var('postid')) ? get_query_var('postid') : null;
先ほどと同じような処理で、get_query_var(‘postid’) の結果がセットされている場合はその値を、セットされていない場合は null が $postID に代入されます。
Warning: Undefined array key “〇〇” in…
こちらも変数未定義エラーと同様、”〇〇”の配列が存在しませんよという警告です。例えば
$_GET[‘recipe’]
これだとphp8ではエラーとなります。同じくisset関数を使って
if(isset($_GET[‘recipe’])){
配列キーがあった場合の処理
}
特定の配列キーがあった場合だけ処理してくれるので、エラーを回避できます。
まとめ
php8へのバージョンアップは複数のサイトで行いましたが、ほぼ全てで何かしらのエラーが出ていました。今回紹介したエラー以外にも、非推奨となった関数を使用していたり、php8に対応していないプラグインがあったりとなかなか手のかかる作業となりました。特に古くから運用しているサイトほどエラーが多く、日々のメンテナンスが大事だということを改めて痛感した次第です。皆さんもメンテナンスには十分気をつけてください。
また弊社ではWEBやDTPの制作からマーケティングまでワンストップで対応していますので、お気軽にお問い合わせください。