エックスサーバーから「PHP 8.0 導入のお知らせ」という連絡がきました。そこでさっそく8.0に変更♪といきたいところですが、かつてこんなことがありました。

PHP 7.4にバージョンアップしたら大変なことに Crayon Syntax Highlighter

そこで実験で作成しているどうでもいいサイトで実験。

やはり問題が発生しました。

create_function関数は不可

ひとつめはワードプレステーマのfunctions.php。

ウィジェットを、’widgets_init’ フックを使用してで登録しているのですが、古いテーマはこのように書かれています。これまではこれでも問題なかったのですが、8.0ではダメなようです。create_functionは使用不可となりました。

この部分は以下のように書き換えます。

プラグイン Crayon Syntax Highlighterについて

もうひとつはプラグイン Crayon Syntax Highlighterです。(ワードプレスがインストールされているディレクトリ)/wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.phpにこのような部分があります。

implode関数は配列要素を文字列により連結するためのものです。第一引数がseparatorで第二引数がarrayです。これまでは逆でもよかったのですが、8.0ではサポートされなくなりました。

これで解決できます。

では、よきワードプレスライフを。

追記

じつはまだありました。コードを書いているページをひとつだけ調べて問題ないと思っていたら別のページでエラーが発生していました(こういうのが一番やっかい)。

エラーの原因はget_class。これはオブジェクトのクラス名を返す関数ですが、明示的に null を渡すことは、 許されなくなりました。そこでelement関数の第二引数でNULLが渡されたり、省略された場合はget_class($element)ではなくget_class()としなければなりません。

以下のようにすれば解決です。

他にも気づかないところでエラーがでているかもしれません。見つけたら連絡をください。