フォーム全般に自分はよくわかりませんが、
nhtada氏の抱える問題は氏の目の前にしかないので、他人にはよくわからないかもしれません。
具体的であれば、何らかの反応があるかもしれませんよ。
例えば今試されたgetについて静的ページにフォーム(送信ボタン)作って、getで送ると動くということでしょうか。
あるいは商品のページの量が多いので、wordpressの投稿化が無理とかなんでしょうか。
@nhtada さん
作者です。MW WP FormはCSRF対策で外部からの送信を受け付けないように正しいトークンが送信されないと受け付けないような仕組みになっています。そのため外部からPOSTで送るというのはできません。
商品ページもWordPressであればフックを使ってなとかすることもできそうですが、静的ページということですので何とかGETで頑張るしかないかなと思います。。
こんにちは
がんばれば出来るようです。
作者の方が言われているように、POSTデータが存在すると処理しないようになっているようです。
ですので、initアクションフックでPOSTデータをセッションに保持させ、POSTデータをクリアしてしまいます。
function my_init(){
if( !isset($_SESSION) ) {
session_start();
}
if(!empty($_POST)){
$_SESSION['post_data'] = $_POST;
unset($_POST);
}
}
add_action('init', 'my_init', 1);
保持させるのはセッションでなくてもいいかもしれませんが、手っ取り早くセッションを使っています。
実際には現在のページやPOST先のページを判定しないと、送信時のPOSTもクリアされたり、管理画面のPOSTもクリアされたりしててんやわんやになると思うので、ご注意ください。
そして、固定ページ側でJavaScriptでフィールドにセットします。
<?php
echo '<script>';
echo 'jQuery(function($){$("input[name=test]").val("'.$_SESSION['post_data']['test'].'");});';
echo '</script>';
?>
こちらは、このままだと改行がある場合におかしくなります。
ですので、改行をエスケープしておいて、セット時に置き換えるとか、何かそのような処理が必要と思います。
あとは・・・がんばってみてください。
皆さま、ありがとうございます。
@oisit さま
>例えば今試されたgetについて静的ページにフォーム(送信ボタン)作って、getで送ると動くということでしょうか。
はい。テストで試しているものはそんな感じです。
GET前提だと?item=コード名のようなクエリストリングにするのがせいぜいですが、
受け取り側(MW WP Form)でその商品の説明文などを表示させたいのです。
アイテム数が多く、受け取り側で全ての情報を持つ(コードから判定して表示させる)のも大変で、
とはいえ、送信側で商品ごとにカスタム投稿などで登録する方式(これならMW WP Formの投稿データ取得機能で対応可)にするにも現実的に厳しい状況でした。
@inc2734 さま
素晴らしいプラグインの開発、感謝いたします。大変に重宝しております。
>商品ページもWordPressであればフックを使ってなとかすることもできそうですが、静的ページということですので何とかGETで頑張るしかないかなと思います。。
なるほど。ちなみにWordPress固定ページであればなんとかなるものでしょうか。
アイテムごとにカスタム投稿で記事を登録(URL引数を用いる)は難しいのですが、
同じWordPress内の固定ページに商品一覧(アイテムごとにformタグがあり、postで引き継ぎたい内容をhiddenで持たせておく)のはできそうです。
@munyagu さん
そのようなやり方もあるんですね。簡単にはいかなさそうですが、参考にさせていただきます。
具体的な方法も書いていただき大変参考になりました。ありがとうございます。
後学のためお教え願えたら嬉しいのですが、
DBの独自のテーブルに商品のデータを格納して、
GETで送信した数値からDBに問い合わせるというのは、
MW WP Formの本来の機能のpost_idから
問い合わせフォームと作るのと変わらないんでしょうか。
@munyagu さん @nhtada さん
あ、そうですね。送信時と勘違いしていました。入力画面に初期値として反映させるのであればできそうですね。初期値を設定するフックがあるので、js は使わなくてもフック経由で直接設定できるかと思います。
http://plugins.2inc.org/mw-wp-form/filter-hook/mwform_value/
@oisit さん
GETで送信した数値からDBに問い合わせるというのは、
MW WP Formの本来の機能のpost_idから
問い合わせフォームと作るのと変わらないんでしょうか。
?post_id がある場合にはそのIDをもとに WordPress のテーブル(wp_posts とか)からデータを取得します。
http://plugins.2inc.org/mw-wp-form/manual/url-query/
独自のDBに問い合わせたいのであれば、?post_id ではないオリジナルの引数を何か持たせて、
http://plugins.2inc.org/mw-wp-form/filter-hook/mwform_value/
にフックした関数内で DB からデータを引っ張ってきて設定する処理を書けばよいかと思います。
@inc2734様
わざわざレスありがとうございました、勉強になりました。