同じ質問を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さんのおかげで全てが解決しました。ありがとうございました。これからも多くの彷徨える子羊たちをお助け下さい。