失敗談:phpの編集にメモ帳を使ってはいけない( BOM)

公開ページの上部が、微妙にずれる。それも固定ページによってずれないものもある。
ちょっと時間を要した原因探しで見つけた、失敗談です。

ヘッダの表示が微妙に乱れる?

とあるサイトを作っていて、気になることを発見!
ほとんどのページを固定ページで作っていて、それらを全て専用のテンプレートで作成しています。当然、cssも多用しています。サイト共通のcss、ページ固有のcss。各cssの大きさを抑えるため、自分なりに工夫していました。

ところが作成した固定ページ。ページによって、上部が微妙に乱れます。
cssの仕業だろうと思って見直しました。いろいろ調べてみましたが、原因がわかりません。
そして、ある法則性が見つかりました。乱れというのはヘッダの、ある部分。見た目は1行下にずれています。
ずれているページと、ずれていないページ。規則性もありません。

????????????

見つけたものは

cssを調べる方法は、chromuの「検証」機能。
でも、どこをどう調べても、違いが見つかりません。

諦めかけたとき、目に入ったのが一番上です。

なんか、不思議なものがあるぞ?


”” ってなんぞや?

と言うくらいだから、分かりません。phpのソースに書いた記憶は、さらさらありません。

ググりました。でも出てきません。「 に一致する情報は見つかりませんでした。 」って、何?

そこで、前後にダブルクオーテーション(”)を付けてググると、出てきました。
『&#65279』とは? → BOM … だそうです。

BOMとは

BOM(Byte Order Mark)と呼ばれているものです。ボムと聞いて良くないものと思いがちですが、これはファイルを実行する前に「Unicodeで作成されたテキストのファイルですよ」と宣言する『見えない文字列』の事です。UTF-16では必須項目だそうです。

現在主流のUTF-8では「あっても無くても良い」ということになってはいるのですが、これがある事によりHTMLが正常に読み込めなかったり(今回のケースでは空間が出来てしまう。)、PHPが実行出来なかったりします。

ヘッダーの上の「妙な空間」は『&#65279』かもしれない。

『見えない文字列』なんて、見えないよー!
でもそういう事なんですね。そして、これが入ってしまう原因は、

今回、『&#65279』が入ってしまった原因は、ちょっとした編集をする際にWindows標準ツールの『メモ帳』を使ったことが原因でした。他のエディタ類でも設定を変更せず、そのまま使ってしまうとBOMが入ってしまうものもあるようですが、私の環境ではWindowsのメモ帳が原因でした。
メモ帳では特に設定項目もなくBOMを含んだ状態で保存されてしまうので使わないようにしましょう。

とほほ… そうなの?
信じたくないことだけど、「メモ帳」を使っていたのか…

解決策

簡単です。「メモ帳」以外のエディターで、BOM無しで保存すればいいだけです。これで、長い苦悩から開放されました。

補足:その作り方はよくない…

ところで、固定ページごとにテンプレートを作るのは、否定的な意見もあるようです。

①「サイトのテーマ」を変えた時に、固定ページが真っ白になる

当然ですね。サイトのテーマ(子テーマ)の下に固定ページのテンプレートを置くわけですから、テーマを変えれば移動しなければなりません。

でも、テンプレートをコピーすればいいわけだし。
テーマのcssによって見栄えが変化することも、元のcssをコピーすればいいわけだし。私は

②「サイト内検索」が効かなくなる

WordPressで提供されているサイト内検索は、サイト用のDBを検索する機能。固定ページの編集画面で入力された内容が検索対象になります。phpに記述された内容は、検索できないという事ですね。

でも、Googleの“サイト内検索”を利用すればいいわけだし。

ということで、私はこの作り方を通します!

テンプレートphpを編集するだけでページを編集できることは、いちいちWordpressを開かなくてもできる。これはとても便利で、時短になります。

cssの変更も、独自cssにすることで、Wordpressは無関係。
なお、cssの読み込みは各固定ページで自動でできるようfunction.phpで行っています。

コメント

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