サポート » テーマ » 1つの記事・1ページ内でデータのやり取りを行う時のform action指定先は?

  • 解決済 takepiwith7

    (@takepiwith7)


    以下のコードを1つの記事内または1独立ページで行う場合、<form action=””>はどのようになりますでしょうか?1つの記事内の場合、1独立ページの場合、両方の回答が知りたいです。よろしくお願いします。独立ページ(test.php)は、wp-content > themes > test(自作)内にあると仮定します。index.php , style.cssと同じ場所にあります。
    以下ソースです。
    <?php
    $name = ($_POST[“name”]);
    $age = ($_POST[“age”]);
    ?>

    <form action=” ” method=”post”>
    名前: <input type=”text” name=”name” />
    年齢: <input type=”text” name=”age” />
    <input type=”submit” /></form>

    こんにちは、<?php echo $_POST[‘name’]; ?>さん。
    あなたは、<?php echo $_POST[‘age’]; ?> 歳です。
    <!–ソース終了–>

    私がやりたいことは、入力フォームにより入力されたデータを、そのページに返したい(表示させたい)ことです。別のページにて表示させることはできました。Exec-PHPがプラグインされています。Wordpress ver2.8.6 Xampp ver2.5です。wordpress初心者ですので、詳しく説明して頂けると幸いです。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • 同じ質問をHatenaでもさせて頂いております。異なるサイトでもマルチポストなのでしょうか?お気にさわられましたら、申し訳ございません。

    現在、hatenaでは、以下の回答を頂いております。

    < form action=”<?php echo get_option(‘siteurl’); ?>/wp-comments-post.php”>
    サイトのURLを今回は取得すればいいみたいです。取得方法は色々とあるみたいでこれは一例らしいです。上記の方法よりよい方法があれば、他の取得方法とかも知りたいです。

    試した結果を後でこちらに記載させて頂きます。

    < form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php">
    これはコメントフォームに戻すときの書き方じゃありません?今回は完全に独自フォームを使用しているのですよね?このまま記述しても動かないと思いますよ。

    というか、前回のhttp://ja.forums.wordpress.org/topic/2886?replies=3質問のjim912さんの回答で既に答えが出ています。

    ここは、test.phpを適用させる固定ページのURLになるべきです。

    この固定ページのURLを取得して適用すればいいだけの話です。

    異なるサイトでもマルチポストなのでしょうか?

    もちろんです。

    test.phpを適用させる固定ページのURLにさせるのは、理解できました。しかし、②③で詰まっています。お助け下さい。

    ①記事と固定ページで行った場合、
    記事に記載したコード
    <form action=”<form action=”<?php bloginfo(‘template_directory’); ?>/test.php” method=”post”>” method=”post”>
    名前: <input type=”text” name=”name” />
    年齢: <input type=”text” name=”age” />
    <input type=”submit” /></form>

    固定ページ(test.php)に記載したコード
    <?php
    $name = ($_POST[“name”]);
    $age = ($_POST[“age”]);
    ?>
    こんにちは、<?php echo $_POST[‘name’]; ?>さん。
    あなたは、<?php echo $_POST[‘age’]; ?> 歳です。

    固定ページに出力することができました!

    ②1つの記事に質問のコードを記入して投稿した場合、
    < form action=”<?php echo get_option(‘siteurl’); ?>/wp-comments-post.php”>
    では、HTTP405エラーが出てしまいます。

    ③1つの固定ページ(test.php)に質問のコードを記入した場合、
    <form action=”<form action=”<?php bloginfo(‘template_directory’); ?>/test.php” method=”post”>” method=”post”>
    では、表示されません。

    私としては、1つの記事または1つの固定ページで入力を行い、処理を表示させたいと考えています。
    <form action=””>をどこに指定すればよいのかが、解決のポイントだと思うのですが・・・
    ご教授をよろしくおねがいします。

    ん~ですから、test.phpを呼び出しても意味がないのです。

    固定ページ(test.php)はテンプレートなんですよね?これが前提の話になりますが。
    1のように記事からtest.phpを直接呼び出せばwordpressとは関係なくtest.phpが単独で呼び出されるのですから表示されて当然です。

    2や3のように自分自身を呼び出すには自分自身のURLを記述する必要があります。
    試しに3の場合で、まず3のページを表示させてみてください。パーマリンクの設定にもよりますが、http://www.exeample.com/wordpress/testなどのアドレスになっているはずです。(記事の場合は/wordpress/?p=123など)
    このアドレスをそのままactionに指定してください。
    これで動けば後はそのアドレスをどのように持ってくるかです。そのあたりはCodexの記述を参考にすればすぐに思いつくと思いますよ;)

    shokun0803さん ご回答ありがとうございます。
    自分も自分自身のURLを記述する必要があるのは理解しているのですが、うまくいきません。教えて下さったやり方(パーマネントに書かれているアドレスをactionに入れる)でもうまくいきませんでした。
    状況は以下の通りです。
    1:記事投稿時のパーマリンクをactionに入れる(今回は記事にコードを記載しました)
    <form action=”http://127.0.0.1/wordpress/?p=110″>(110番目の記事なので)
    2:記事ページへ移動します。アドレスは
    http://127.0.0.1/wordpress/?p=110 です。
    3:その記事で名前・年齢に100を入力して送信すると、
    http://127.0.0.1/wordpress/?name=100&age=100 へ移動します
    (このアドレスに?p=110が入っていないのがあやしいと思うのですが・・・)
    4:そのページ(http://127.0.0.1/wordpress/?name=100&age=100)では、エラーは出ていませんが、表示されていてほしい、「入力フォーム」と「こんにちは さん」と「あなたは 歳です」が表示されていません。コンテンツは白紙状態です。
    5:試しに、http://127.0.0.1/wordpress/?p=110?name=100&age=100でやってみましたが結果は同じでした。

    状況はこんな感じです。自分でもいろいろ試していますが、もう少しお力をお貸しください。  

    3:その記事で名前・年齢に100を入力して送信すると、
    http://127.0.0.1/wordpress/?name=100&age=100 へ移動します
    (このアドレスに?p=110が入っていないのがあやしいと思うのですが・・・)

    これも前回jim912さんの回答にありますよ。

    それから、項目名のnameにwp-includes/classess.phpの$public_query_varsの配列に存在するものを使っても404になります。上記例ではnameですね。

    予約されている項目を使用することはできません。あと、p=110をpostで飛ばしたいならhiddenで飛ばさなくてはいけません。getならできそうですが・・・
    <input type="hidden" name="p" value="110" />とかの追記が必要かもです。これも自動で書き出せば可能ですね;)

    shokun0803さん回答ありがとうございます。jim912さんが何を言っているのかがわかってきました。
    名前: <input type=”text” name=”name” />のnameは予約語なので、404エラーが出るのですね。name=”namae”などでしたら大丈夫ということですね!

    <form action=”http://127.0.0.1/wordpress/?p=記事番号” method=”post”>
    名前: <input type=”text” name=”namae” />
    年齢: <input type=”text” name=”age” />
    <input type=”submit” /></form>
    で試してみます。

    shokun0803に感謝です。ついに記事内に表示できました!ありがとうございます。
    <form action=”http://127.0.0.1/wordpress/?p=記事番号” method=”post”>の
    http://127.0.0.1/wordpress/?p=記事番号 の方法が美しくない気がするので、美しい指定方法はありますでしょうか(コードまたは参照ページなど)?これでやっと解決しそうです。ありがとうございました。

    <form action="<?php the_permalink(); ?>" method="post">
    こんな感じ?

    shokun0803さんのおかげで全てが解決しました。ありがとうございました。これからも多くの彷徨える子羊たちをお助け下さい。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「1つの記事・1ページ内でデータのやり取りを行う時のform action指定先は?」には新たに返信することはできません。