【当サイトはアフィリエイト広告を利用しています】

functions.phpに機能追加する時、コード挿入の目安となる位置

2013年6月18日


Warning: Undefined array key "width" in /home/rikumaxs1014/rikumalog.com/public_html/wp-includes/media.php on line 1659

Warning: Undefined array key "height" in /home/rikumaxs1014/rikumalog.com/public_html/wp-includes/media.php on line 1660

少しの記述ミスでもブログ表示がおかしくなる

WordPressのテーマをカスタマイズするとき、慣れない方々が最も恐れるのは「functions.php」というテーマファイル。

他のテーマファイルもPHPコードの記述ミスなどにより表示を崩してしまう時はありますが、functions.phpの記述ミスは表示崩れだけでは済まない場合もあり、最悪だと管理画面すら表示されず、真っ白画面になってしまいます。

以前に別のエントリーでfunctions.phpのカスタマイズ記事を書いた際、どこに挿入すればいいか分からないという問い合わせがあり、その時は個別に対応しました。

確かに分からないですよね。一歩間違うとブログ全体が表示されなくなる恐怖もあるんです。なおのことカスタマイズには慎重になってしまいます。

また、自作テーマであれば最初から自分で作ってるので、ある程度把握できたりもしますが(と言いつつ自作テーマの私もブログ真っ白にしてますけど。ヘタレなので)、これが他者の作成したダウンロードテーマであれば更に複雑。

プログラムコードの記述も人それぞれですので、ここに挿入すればヨシ!と一概には言えません。

他にも同様の疑問を持たれてる方がいるかも、と思って今回簡単な解説エントリーを書いてみることにしました。

各機能の「ひとくくり」を把握する

まず、functions.phpを始めとするWordPressの各テンプレートファイルは、「PHP」というプログラミング言語で書かれています。

screenshot_201306_020

↑「<?php」と「?>」で囲まれてるところがPHP。上の図でいう「なんやら、かんやら」の所に、各機能を書いていきます。

たとえば、

function my_excerpt_mblength($length) {
	return 120;
}
add_filter('excerpt_mblength', 'my_excerpt_mblength');

WordPressで抜粋文を使用するとき、その文字数を120文字に指定する機能です。

1行目から3行目は「function」と呼ばれる「ひとくくり」。関数とも言います。

functionは、「{」と「}」で囲みます

screenshot_201306_021

4行目の「add_filter」というのは、WordPressの命令。これがないと1行目~3行目の関数は動きません。

1~3行目の関数 + 4行目のWordPress命令、セットで1つの機能です。

screenshot_201306_022

↑1つのセット。ひとくくり。

functions.phpにある全ての機能が常にセットというわけではありません。WordPress命令のみしかない機能もあります。
add_filter以外にもWordPress命令はた~くさんあります。

ということで、

screenshot_201306_023

↑すごく大ざっぱに書くと、上の図のような関係性でfunctions.phpの中身が成り立ってる、とお考えください。

では、新機能のコードはどこに挿入すればいいの?

本題です。というか、クイズです。

さっきの例に、新しい機能を追加するとしましょう。

screenshot_201306_024

↑上のような新機能をfunctions.phpに追加します。ここで問題。

screenshot_201306_026

↑上の図に1番から5番まで番号を振ってます。矢印の位置に新機能のコードを追加する、という意味。

では、1番から5番の中で、コードを挿入しても正常に動作しない位置(=入れたらダメな位置)は、どこだと思いますか?

正解は、この後すぐ。では、シンキング・ターイム!

 

正解発表です

では正解発表。

先ほどの図、1番から5番の中で、コードを挿入しても上手く動かない位置は、

2番 と 5番

です。下手するとブログが真っ白状態になります。(怖いので確認はしてません)

逆に言うと、1番、3番、4番の位置だと正常に動くことになります。

エラー例の解説。まず2番は「焼肉バイキング」という関数の途中に新機能を挿入することになります。

screenshot_201306_027

↑こういうことですね。「焼肉バイキング」の中に「深夜のバー」が入り込んじゃってジャマしてる状態。これでは上手く動きません。アウト。

もう1つ、5番は

screenshot_201306_028

↑PHPの囲いの外に書いてしまってます。当然ながらPHPとは認識されません。これもアウト。

4番は関数とWordPress命令の間に割り込む形になってます。これ動くの?ってなりますが、たぶん動きます。すいません、実験してません。「ひとくくり」という意味ではオススメしない位置ですが、PHP的には動くと思います。

1番と3番の位置は間違いなく動きます。この位置に入れるよう心掛けていれば絶対に自分のブログが真っ白になるなんてことは今後ありません。期末テストには出ませんが初心者の方々は必ず覚えておきましょう。それにはまず、なぜその位置だと絶対安心なのかを理解してください。

screenshot_201306_029

↑機能の「ひとくくり」を把握し、その「ひとくくり」の間に挿入してあげればいい、ということ。ここを確実に押さえておきましょう。

functionが書かれているのであれば、

◆functionの終了を意味する「}」のすぐ下
◆「function」行のすぐ上

であれば、他の関数を邪魔したり、PHPの外に出たりすることなく、正常に動くはずです。

注意点として、「}」は複数書かれてる場合があります。開始を表す「{」が3個あれば、終了を表す「}」も3個ありますので、最後の「}」の下に新機能を挿入しなければなりません。1個目と2個目の「}」の間に新機能を挿入しちゃうとエラーになります。

これを目安として頂ければ幸いです。目安ですからね。

繰り返しますが、functions.phpの修正前はバックアップを取りましょう!

今回、文中で紹介した「抜粋文の最後に記号を表示させる」サンプルコードは、以下の本に解説されていたものを引用しています。

この本には他にもfunctions.phpのカスタマイズ方法がいろいろ解説されています。私もこの本で学習したおかげで自作テーマを作ることができました。興味のある方は一読されてみてください。

-WordPress
-