【WordPress】サイト情報を取得するbloginfo()の非推奨と廃止について
2019年6月13日
WordPress
この記事のURLとタイトルをコピーする
先日、WordPressサイトが表示されない現象が起きました。
サイトを開いてみると、上の状態から表示が変わらない状態。
ローディングが止まらず無限ループしていたのです。
今回は、その時の備忘録です。
WordPressはたくさんのPHP関数が定義されています。
パラメータによりサイト名や出力ファイルまでのパスなど、いろんなサイト情報をブラウザで表示させることができます。
例えば、サイト名を取得するには
サイトのキャッチフレーズを取得するには
など、上記の記述でサイト情報を取得することができます。
直接テーマファイルに触れる方は、必ずと言っていいほど使用していたのではないでしょうか?
実際の記述は、以下です。
scriptタグ内で、jsファイルまでのパスをbloginfo()で取得しています。
元々PHP5に合わせて作成されたテーマですが、PHP7にバージョンを上げたことにより、bloginfo()が適応されなかったための現象。
ローディングを停止させる命令がjsファイル内に書かれていましたが、文字化けによりファイルを読み込むことができず、無限ループが続いているようでした。
ひとつめは、バージョンアップについて。
PHPに関わらずバージョンを上げる行為は、サイト表示にエラーが発生するリスクが伴います。必ずデモ環境などでテストしてから、本番に反映させるのがベストです。
ふたつめは、bloginfo()の記述について。
このテーマが作成されたのは2~3年前ですが、その時点でbloginfo()は既に非推奨でした。
PHP5で非推奨となり辛うじて使えていたけど、PHP7で完全廃止になってしまった。 恐らく、当時の制作者はこのことを認識していなかったのでしょう…。
制作時点で不具合が回避できるなら、それにこしたことはないですね。
(実際は難しいことが多いですが。)
無事に解決できたので、よしとしましょう。
ローディングが止まらず無限ループしていたのです。
今回は、その時の備忘録です。
bloginfo()ってなに?
WordPressのサイト情報を表示させるための関数です。WordPressはたくさんのPHP関数が定義されています。
パラメータによりサイト名や出力ファイルまでのパスなど、いろんなサイト情報をブラウザで表示させることができます。
例えば、サイト名を取得するには
1 |
<title><?php bloginfo( 'name' ); ?></title> |
1 |
<p><?php bloginfo( 'description' ); ?></p> |
直接テーマファイルに触れる方は、必ずと言っていいほど使用していたのではないでしょうか?
原因:bloginfo()が文字化け
結論からお伝えすると、jsファイルの読み込みで使用されていたbloginfo()が文字化けをしていました。実際の記述は、以下です。
1 |
<script type="text/javascript" src="<?php bloginfo(template_url);?>/js/script.js"></script> |
元々PHP5に合わせて作成されたテーマですが、PHP7にバージョンを上げたことにより、bloginfo()が適応されなかったための現象。
ローディングを停止させる命令がjsファイル内に書かれていましたが、文字化けによりファイルを読み込むことができず、無限ループが続いているようでした。
対応法:echoへ記述を変更
bloginfo()をechoの記述に変更します。
1 |
<script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/script.js"></script> |
まとめ
今回、気を付けるべきだった点はふたつ。ひとつめは、バージョンアップについて。
PHPに関わらずバージョンを上げる行為は、サイト表示にエラーが発生するリスクが伴います。必ずデモ環境などでテストしてから、本番に反映させるのがベストです。
ふたつめは、bloginfo()の記述について。
このテーマが作成されたのは2~3年前ですが、その時点でbloginfo()は既に非推奨でした。
PHP5で非推奨となり辛うじて使えていたけど、PHP7で完全廃止になってしまった。 恐らく、当時の制作者はこのことを認識していなかったのでしょう…。
制作時点で不具合が回避できるなら、それにこしたことはないですね。
(実際は難しいことが多いですが。)
無事に解決できたので、よしとしましょう。
この記事のURLとタイトルをコピーする