Hirockingさん、こんにちは。
phpのファイルには、htmlとphpを混在させて記述することが出来ます。
<?php ?> の内側がphpのプログラムとして認識され、外側は通常のhtmlとして表示されます。
ですので、どんなphpのファイルであろうと、phpで処理される部分は、<?php ?>で括られている必要があります。
テンプレートファイルである、header.phpなどは、部分的に<?php ?>が記述されている程度ですが、テーマのfunctions.phpなどは、全てがphpのプログラムとなるため、基本的には全体を<?php ?>で括られていることがほとんどです。
Hirockingさんのfunctions.phpがどのようになっているかは分かりませんが、記述した箇所が、<?php ?>の外側でhtmlとして処理される部分であったのではないかと思われます。
ご回答ありがとうございます。
ネットで検索すると、「このコードをfunctions.phpに書きこめば大丈夫」みたいなことが書かれていて、そのコードが、
add_theme_support( ‘post-thumbnails’ );
set_post_thumbnail_size( 120, 120, true );
と、<?php ?> で区切られていないことが多くて、そのまま書いただけでは動かず、
どういう事なんだろう???
と悩んでいましたが、
<?php ?>
で区切ればいいということなんですね!
自分の functions.php を見てみたところ、
add_theme_support( ‘post-thumbnails’ );
set_post_thumbnail_size( 120, 120, true );
このコードが、最終行でした。
HTMLで処理されて動いてるのでしょうか。
質問につぐ質問ですみません。
こんにちは、
自分の functions.php を見てみたところ、
add_theme_support( ‘post-thumbnails’ );
set_post_thumbnail_size( 120, 120, true );
このコードが、最終行でした。
HTMLで処理されて動いてるのでしょうか。
ファイルの末行まで、PHPの場合には、ファイル末の?>
を省略する事が出来ます。
このような省略は、インクルードした場合などに、行末?>
の後の改行や空白が、悪影響を与える事を防止するなどの目的で、意識的に使われる事があります。
functions.phpはインクルードして利用されるファイルですから、そうなっている事もあると思います。
ただし、ヒアドキュメント形式で記述しているような場合には、ファイル末でも?>
が必要になる事もあります。
ども。
.phpのファイルは、PHPで書かれている”部分もある”ファイルとして扱われるため、
PHPで書かれている部分は、<?php と ?>でPHPであることを示さなければなりません。
<?php と ?>で囲まれていない部分は、そのまま出力されます。
Wordpressの一部分としてPHPを使う場合は、ブラウザに出力され、HTMLファイルと
同様に扱われます。
この機能がPHPにあるので、HTMLタグと混在してPHPが使えて、
<ul><li><?php echo function();?></li></ul>
なんて使い方ができるわけです。
さて、<?phpで始まっているけれども、?>を書く前にファイルが終わっている場合は、
?>がファイルの最後にあるものと解釈してPHPは扱います。
なので、純粋にPHPをプログラム(特にライブラリ)として使う場合には、
ファイルの先頭、最初の行に<?phpを書いて、最後に?>は書きません。
書かなくても良いんじゃなくて、もう書かないほうが良いと覚えてしまってください。
これは、?>の後にスペースやタブ、改行などが入っていると、それが出力されて
思わぬところで不具合として現れるためです。
具体的には、特定のブラウザで表示が崩れたり、headers already sent…なんてエラーになってwordpressが正しく動かないこともあります。
具合の悪いことに、この不具合は、大抵別のCSSファイルやPHPファイルを変更したときに現れることが多いので、単純なミスなのに原因を見つけ出すのが難しいタイプの不具合です。
そういうわけで、functions.phpには、
ファイルの1行目の1文字目から、<?phpを書いて、最後に?>はつけない方が良いです。
functions.php に
add_theme_support( ‘post-thumbnails’ );
set_post_thumbnail_size( 120, 120, true );
記述をすると良い
と書いた人には、このへんは常識ということで、わざわざ書かなかったということです。
この辺は、プログラミング言語としてのPHPの基礎なんですが、
wordpressのカスタマイズをしたい・・・と思ってPHPをかじった人には
説明されなきゃわかんない・・・・って話ですよね。
Artisteer で出力した functions.php には、先頭に<?phpが書いてあったはずです。
今回は、
<?php ?>
で区切ればいいということなんですね!
というのは、もちろんそれでも場合によってはうまく動くかもしれませんが、
新たにfunctions.phpファイルを自分で作ったなら、その1行目の1文字目から、<?php
を自分で付け加えなれればいけない。
と思っていた方が良いでしょう。
参考になれば。