『PHPの更新が必要です』PHP7.2系にアップデートでデザイン崩壊

サイト運営

WordPress5.2ぐらいからPHP更新の通知『PHPの更新が必要です』がダッシュボードに出るようになりました。

このメッセージは、PHPバージョンがPHP5.xの人にだけ表示されるようです。

WordPressのダッシュボードにPHPの警告が!PHPの更新が必要です

WordPressのダッシュボードに以下の様なPHPの警告が出ているのを目にしたことがあるかもしれません。

その理由は以下の様な背景からです。

今月末に WordPress 5.2 のリリースを予定していますが、それと同時に PHP の最低必須バージョンを更新します。WordPress には、PHP 5.6.20 以降が必須となります。

PHP 最低必須バージョンの変更
今月末リリース予定の WordPress 5.2 では PHP の最低必須バージョンを更新し、PHP 5.6.20 以降が必須となる見通しです。

PHPのバージョンをPHP7.xに上げよう!

じゃぁ、PHPのバージョンを上げようと思う人は多いと思いますが、現在PHP7.x系はPHP7.0、PHP7.1、PHP7.2、PHP7.3とあります。

どのバージョンも同じように感じますか?

XserverだとPHP7.2は推奨バージョンになっているので世の中的にもPHPを7.2にする人は多そうです。

なんとPHP5.xからPHP7.2に上げると一気にデザインが崩れたりします。

なんとPHP5.xからPHP7.2に上げると一気にデザインが崩れたりします。

デザインが崩れるということは、CSSが外れたということです。

なぜ外れるのかというと、bloginfo()を使用してCSSを読み込んでいる場合、PHP7.2だと無視されてしまうからです。

サーバーのログを確認してみると次のようなメッセージがありました。

Use of undefined constant stylesheet_url – assumed ‘stylesheet_url’ (this will throw an Error in a future version of PHP)
テンプレートタグ/bloginfo - WordPress Codex 日本語版

通常、テーマにこのような古い記述はバージョンアップしていればないはずですが、制作会社が作ったテーマを利用している場合はテーマの更新そのものがありませんので、PHP5.xからPHP7.2に変更するとCSSを読み込まなくなってデザインが崩れるわけです。

PHP 7.2系でデザインが崩れた時の修正方法

PHP7.2じゃなく、7.1や7.0にバージョンを下げれば問題なく動く場合は、そのような対処方法も一つの手ではあります。

しかし、いずれ対応しなければならないので、以下のように少し調べて修正してしまう方がハッピーだと思います。

まず、WordpressなどでCSSを読み込んでいるテンプレートファイルを探します。

通常、CSSはheader.phpで読み込んでいると思います。複雑なテーマの場合は他にもあるかもしれません。

ファイルを開いて、bloginfo();が使われていたらビンゴ!!

自分の場合は、以下の記述がありました。

無視される記述(NG)

<?php bloginfo(‘stylesheet_url’); ?>
<?php bloginfo(‘stylesheet_directory’); ?>
<?php bloginfo(‘template_url’); ?>
<?php bloginfo(‘template_directory’); ?>

修正後の記述(OK)

<?php echo get_stylesheet_uri(); ?>
<?php echo get_stylesheet_directory_uri(); ?>
//親テーマの場合(基本)
<?php echo get_template_directory_uri(); ?>
//子テーマの場合
<?php echo get_stylesheet_directory_uri(); ?>

念のため他のbloginfo()についても以下の記事を参照して書き換えていけばOKです。

WordPressのbloginfo()の一部廃止と非推奨に要注意!使用箇所をしっかり確認
こんにちは、メディア事業部ウェブディレクターのコネル飯塚です。 「bloginfo()」はサイトのさまざまな情報を表示させる関数です。WordPressの管理画面から入力されたプロフィールや一般...

まとめ

PHP7.0や7.1に上げても問題なかったのに、PHP7.2にしたら急にデザインが崩れて焦る人は結構多いのではないと思います。そんな時は、CSSを呼び出しているところが間違いなく動いていないので、落ち着いて無効になったテンプレートタグがないか確認した方が良いと思いました。

 

 

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