wordpress php で解らない事があります。どなたか教えて頂けますでしょうか?

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/08/18 15:09:09
  • 終了:2011/08/20 13:33:39

ベストアンサー

id:a-kuma3 No.3

a-kuma3回答回数4583ベストアンサー獲得回数19232011/08/20 13:02:05

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

じゃ、駄目なん?

id:mi-kun6520

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

とても助かりました。

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

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

2011/08/20 13:33:26

その他の回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4583ベストアンサー獲得回数19232011/08/18 15:25:16

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

id:mi-kun6520

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

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

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

2011/08/19 20:47:43
id:a-kuma3 No.2

a-kuma3回答回数4583ベストアンサー獲得回数19232011/08/19 23:34:37

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

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


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() のというような関数名になるはずです。

id:mi-kun6520

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

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

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

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

'.$a1.$a2);};

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

2011/08/20 09:20:19
id:a-kuma3 No.3

a-kuma3回答回数4583ベストアンサー獲得回数19232011/08/20 13:02:05ここでベストアンサー

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

じゃ、駄目なん?

id:mi-kun6520

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

とても助かりました。

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

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

2011/08/20 13:33:26
  • id:a-kuma3
    >すいません、お手数かけました。
    いや、そういう趣旨のサイトだし :-)
  • id:mi-kun6520
    a-kuma3
    >いや、そういう趣旨のサイトだし :-)
    カッコイイ!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません