人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

wordpress php で解らない事があります。どなたか教えて頂けますでしょうか?
メールフォームをPOSTで受けた際にチェックしますが、dieで<html>も書いておかないといけないのですが、表示ソースを見るとdieの中身が
一番目に get_sidebar()
二番目に get_footer()
三番目に 会社名を入力して下さい。'.'</div>
という順番でソースが書かれてしまいます。

if($name=="名前を入れて下さい。" or $name==""){die('会社名を入力して下さい。'.'</div> '.get_sidebar(). get_footer() );};

●質問者: M
●カテゴリ:インターネット ウェブ制作
✍キーワード:name PHP wordpress たか ソース
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● a-kuma3

get_sidebar() とか、get_footer() とかって、サイドバーやフッターを文字列として

取得する関数ではなくて、サイドバーやフッターの HTML を吐き出す ものだから。

http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_sidebar

http://wpdocs.sourceforge.jp/%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%89%E3%82%BF%E3%82%B0


で、die の処理に入る前に、パラメータが先に評価されるので、以下のような順番で処理されることになります。

  1. die の引数の get_sidebar() が呼ばれて、内容が出力される。戻り値は空(正確には void)。
  2. die の引数の get_footer() が呼ばれて、内容が出力される。戻り値については、同様。
  3. die が、全ての引数を出力。

get_footer() のソースとかを見た方が、理解が早いかもしれん。

http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/general-template.php

◎質問者からの返答

すいません、もう少し具体的におしえていただけないでしょうか?

何故、dieの中身が左から順に出力されないのか?

わからないんです・・・。


2 ● a-kuma3

すいません、もう少し具体的におしえていただけないでしょうか?

じゃあ、もうちょっと、しつこく。


if($name=="名前を入れて下さい。" or $name==""){
 die('会社名を入力して下さい。'.'</div> '.get_sidebar(). get_footer() );
} 

これが、次と同じだということは理解できますね?

if($name=="名前を入れて下さい。" or $name==""){
 $a1 = get_sidebar();
 $a2 = get_footer();
 die('会社名を入力して下さい。'.'</div> '. $a1 . $a2 );
} 

で、「どうして、</div> の後ろに get_sidebar() が返す HTML がくっつかないんだ?」と、

質問してるわけですよね。


「get_sidebar() が返す HTML が」というのが、大きな勘違いです。

get_sidebar() は、サイドバーの HTML を文字列として返す関数ではないんです。

サイドバーの HTML を出力して、空文字列 (正確には void) を返す関数なんです。

get_footer() も、同じ。


if($name=="名前を入れて下さい。" or $name==""){
 $a1 = get_sidebar(); // サイドバーの内容を出力して、void を返す。$a1 は空文字列に設定される。
 $a2 = get_footer(); // フッターの内容を出力して、void を返す。$a2 は空文字列に設定される。
 die('会社名を入力して下さい。'.'</div> '. $a1 . $a2 ); // $a1 と $a2 は空文字列なので、'会社名を入力して下さい。</div> ' という文字列を出力して、処理を打ちきる
} 

get_sidebar() という関数名が悪いんですね >wordpress

普通の感覚で言ったら、何かの値が返ってくると思うでしょう。当然です。

普通の人が作れば、output_sidebar() のというような関数名になるはずです。

◎質問者からの返答

なんとなくわかりました。ではwpなのでこんな感じになるのでしょうか?

if($name=="会社名を入れる。" or $name==""){ $a1 = bloginfo('url')/sidebar;

$a2 = bloginfo('url')/footer;

die('会社名を入力して下さい。'.'

'.$a1.$a2);};

それとも、include("sidebar.php")の用なものをつかうのでしょうか?


3 ● a-kuma3
ベストアンサー
if($name=="名前を入れて下さい。" or $name==""){
 echo '会社名を入力して下さい。'.'</div> ';
 get_sidebar();
 get_footer();
 die('');
} 

じゃ、駄目なん?

◎質問者からの返答

ありがとうございます。できました!

とても助かりました。

ちょっと難しく考えすぎていたようですね。

すいません、お手数かけました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ