昨日、コメントで、functions.phpをアップするとサイトが見られなくなってしまう、という質問を頂きました。
私もWordPressを始めたばかりで、PHPのこともよくわからず、色々なコードをコピペしては勉強していた頃、やっちゃったんです。
真っ白な画面。
ほんと怖かったですね〜。いったい何をしてしまったのかと。
いつか書こうと思っていたことなので、今日はこのことについて書いてみようと思います。
そもそもfunctions.phpってなんなのよ
そもそもfunctions.phpってなんなのよ、ってことなんですが。
例えば、Twenty Tenのテーマフォルダにあるfunctions.phpを見てみましょう。
<?php /** * TwentyTen functions and definitions * * Sets up the theme and provides some helper functions. Some helper functions * are used in the theme as custom template tags. Others are attached to action and * filter hooks in WordPress to change core functionality. *
いきなり英語でズラ〜〜っとコメントが。
クラクラしますね。
お!でもSets up the theme 〜なんて書いてありますよ。
そしてちょっと下がって41行目あたりからをみてください。
/** * Set the content width based on the theme's design and stylesheet. * * Used to set the width of images and content. Should be equal to the width the theme * is designed for, generally via the style.css stylesheet. */ if ( ! isset( $content_width ) ) $content_width = 640;
「content_width」と書いてあります。なんだかわからないけど、これは「content」の幅を指定してるっぽいぞって感じがしますね。
そうです、functions.phpっていうのは、テーマに直に書くのではなくて、便利な機能や決まりごとを付け足すためのファイルなんです。
「function」というのは「関数」のことで、ここで決めた決まりごとをテーマから呼び出したり、管理画面に機能を付け足したりできます。「関数」という言葉は忘れてもいいですけど、ちょっと特別なファイルだと、覚えておいてくださいね。
「.php」
WordPressのテーマファイルにはみんな「.php」が付きますね。PHPという言葉で書かれているわけです。
でも、ほとんどのファイルはHTMLが一緒に書かれていて、HTMLとPHPが混ざったような形で書かれています。
ですから、改行、インデントなど、ほとんど気を使わずに書いていくことができます。そこにちょっとした落とし穴があるんです!
同じ「.php」でも。。
「functions.php」は特別なファイルと書きましたね。このファイルには「決まりごとのみ」を書きます。
余計な改行やら、空白やらが入ってしまうと、ミスになってしまうんです。これが「真っ白画面」のもとになります。
だってTwenty Tenのfunctions.phpだって空白の行あるじゃない
そうなんですよね〜。
空白の行、あるんです。
またしてもこれがわかりにくい。
でも、ひとつだけ覚えてください。これで大丈夫。
<?php・・・?>の外には空白を入れない!
functions.phpもPHPですから、この中に、色々なコードを入れていきますね。
色々なことをしたくて、それぞれ調べて、それをコピペしていたりするとこの<?php・・・?>というのがたくさんになってきます。
<?php function ....... ....... ?> <?php function ....... ....... ?> <?php function ....... ....... ?>
こんな風になりませんか?これはOKなのですが、
<?php function ....... ....... ?> <?php function ....... ....... ?> <?php function ....... ....... ?>
これはダメです。違いがわかるでしょうか。
一つ一つの塊の間に空白行が入っています。このようにカッコの外に余計なものがあると、「なんだかわからないよ〜」ってなって画面が真っ白になってしまうんです。カッコの中なら大丈夫です。
ミスをふせごう
「たったこれだけのことで真っ白になるなんてひどい!」って怒っても仕方ないのでどうやったらこのようなことになりにくいか考えてみましょう。
functionを並べるだけなら、いちいち閉じずに
<?php function ....... ....... function ....... ....... function ....... ....... ?>
こんなふうに書いても大丈夫です。
この中だったら空白行だって大丈夫です。でも、この中ではきちんとPHPで書きましょうね。
というわけで、functions.phpを編集したら、サイトが真っ白になっちゃったときには、こんなことになっていないか、確認してみてくださいね!
あとは、WordPressのインストール2〜wp-config.phpの設定の時に書いたように、「文字コードに気をつけて、UTF-8 BOM なし(UTF-8N)で保存する」ことも忘れずに。
ちょっと真っ白になっても慌てず騒がず、WordPressのカスタマイズ、ぜひ楽しんでください。
最高の記事をありがとうございました。
私はPHPのことは何も知らずにwordpressをやっていて、今日function.phpをいじったがために真っ白になってしまいました(ブログも管理画面も私も)。functionに空白の行があったがためにエラーになってしまうなんて、htmlでもcssとも、phpは違うのだなと実感しました。これを機にphpとwordpressがもっと知りたくなりました。
本当に感謝いたします。
今関さん
うれしいコメントありがとうございます。書いててよかった〜〜、と思います!
WordPress、楽しみましょうね!
ピンバック: 8月22日日記 | europa
私もPHPのことはよくわからないままfunctions.phpを変更して真っ白になってしまい、この記事にたどりつきました。
phpを知っている人なら当然のことでも、初心者だとfunctions.phpに書けばいいんだ、と単純に思ってここでひっかかる人、意外と多いと思います。
ありがとうございました!
PHP初心者さん
コメントありがとうございます。記事がお役に立ててよかったです♪
私もPHPはまだまだなので、もっと勉強したいと思っています。
私も今回はじめてWPを使用してサイトを作成したんですが、
functions.phpに記述を追加後、見事に空白になって焦りました。
HTMLだとソースを見やすくするために
よく改行を入れたりするので同じようにしてしまいました。
今回TOPページで新着記事のサムネ画像を動的に表示させたくて、
またfunctions.phpをいじる必要があったので、
念のためfunctions.phpについて検索していたら
webourgeonさんの記事を発見!とてもわかりやすい内容でした!
これで安心してfunctions.phpをいじれます。ありがとうございました。
ピンバック: WordPressの管理画面が真っ白に・・・。修復までの道のりが長かった。
ピンバック: WordPressの管理画面が真っ白に・・・。修復までの道のりが長かった。
ピンバック: memo » functions.phpを編集したら、サイトが真っ白になっちゃったときに試してみてね
ピンバック: memo » functions.phpを編集したら、サイトが真っ白になっちゃったときに試してみてね
ピンバック: functions.phpを触ったらWordPressが真っ白に! ドキドキの復旧と、事前に知っておくべきだった知識
ピンバック: 【WordPress】functions.phpには注意☆サーバーエラーでサイトが表示されなくなったのを直せたよ。 | これ、よかったよ。
ピンバック: 【WordPress】サイトが真っ白。サーバーエラーで表示されなくなったのを直せたよ。functions.phpには注意☆ | あさひ録