PHP5.3からPHP5.6にしたら、WordPressが一部、表示されない問題[もやもや解決済]
メモがてら残しておきます。
ロリポップのプラン変更によって、PHP5.3からPHP5.6にすることができるようになっていました。
どうやらバージョンをあげると高速化が図れる模様。
アクセス集中するとすぐにサイトの動きが遅くなるので、嬉しい話だと思いようわからんまま試してみることにしました。
すると、、。
すぐ後に知人からのメッセージ。
ご確認ください。」
なんですとっ!?
見てみると、確かに記事・固定ページだけヘッダーしか表示されていない。
(トップページは普通に表示されている。)
一体なんじゃこら〜というわけで、小一時間、原因探し。
PHPなんて毛が生えるか生えないか程度しか扱えないのに、ディープなバグだったらどうしよう…。
いやな予感がしまくっていたのですが、思ったよりシンプルに表示は復活しました。
if文を途中で「?>」と終わらせる記述方法が原因だった模様
問題だった箇所はこちら。
<?php if( ここに条件 ){ ?> ここにHTMLとか別のPHPとかを記述。 <?php } ?>
問題がわかりやすいように書いています。
要は、
if(){ }
これを途中でPHPとして一回終わらせてしまうと起こるようです。
if(){ /ここをぶった切っていた/ }
主にHTMLを記述するときに切っていたのですが、echoで出力させるように全部切り替えたらすぐ直りました。
<?php if( ここに条件 ) { echo 'ここにHTML'; } ?>
エラーが吐かれなかったので、処理ごと無効(?)みたいになっていたのでしょうか?
ちなみにWordpressのバージョンは4.6.1です。
というか、そもそも上の問題となったような書き方ってよくない書き方なんですかね。
他のテンプレートとかでもよく使われている気がするけど、あんまりPHP5.6になったエラー記事がないし、我が家の環境だけ?
私がよく見てなかっただけで、みんなこんな書き方してないのかもしれないし。
直接の理由が未だによくわかってないので、もやもやしてます。
PHPのバージョンアップは気をつけないと怖いですねー。
ようわからん時は、ちゃんとテストしたほうがいいですね。ようわからん時ばっかりだけど。
※記事で紹介したコードは動作を保証するものではございません。必ず自己責任で使用してください。コードを使う際はテストを行い、動作検証をおこなってください。