どのページ(商品)からのお問い合わせかが分かる方法
-
平素はいつもお世話になっています
Trust Formを利用して各商品に関するお問い合わせを受けていますが、どのページ(商品)からのお問い合わせかが分かる方法あるいはプラグインがあれば助かります。 カートを使うほど煩雑にしたくないのもあります。詳しい方がいればご伝授よろしくお願いいたします。
-
同じことやりましてブログに書きましたのでご参考まで
http://notnil-creative.com/blog/archives/2555hissyさん、早速ご伝授ありがとうございます!
hissyさんに申し訳ございませんが、別のスレッド「[解決済み] Trust Formに初期値を渡す」のgatespaceさんとyyy111さんから教えていただいた方法でやってみましたが、うまく行っていません。
手順として説明します:
「contact」ページに 「[trust-form id=123]」を貼っています。そして、遷移元商品ページ(post=567)には下記(その1)コードを設置しましたが、ボタンを押しても「contact」ページに行かず白いページしか出てこないのです。※その1
<form class=”toform” action=”‘<?php echo get_permalink(get_page_by_path(‘contact’)->ID); ?>'” method=”post”>
<input type=”hidden” name=”eventID” value=”<?php the_ID();?>”>
<input type=”submit” name=”submit” class=”submit” value=”お問い合わせフォームへ”>
</form>ちなみに、テーマフォルダ直下の「trust-form-tpl-123.php」には、「<?php function trust_form_show_input() { …」の上部に、渡された「$_POST[‘eventID’]」を入れるように、下記コード(その2)を入れましたが、この入れ方に問題ありますでしょうか?
※その2
<?php
$events = $_POST[‘eventID’];
$my_page = get_page($events);
$goods = $my_page->post_title;
echo “<p style=\”display:none;\” id=\”goods\”>”. esc_html($goods).”</p>”;
?>
<script type=”text/javascript”>
$(function(){
if($(“input.goods”).val()==””){
var goodsText = $(“#goods”).text();
$(“input.goods”).val(goodsText);
}
});
</script>
//ここまでは追加部分、以下は元のコード
<?php
function trust_form_show_input() {
global $trust_form;
$col_name = $trust_form->get_col_name();
$validate = $trust_form->get_validate();
$config = $trust_form->get_config();
$attention = $trust_form->get_attention();
…ただ今、phpについて猛勉強中!ご指導よろしくお願いいたします。
ぼくの方法の方がシンプルで楽だと思いますが…(^^;
真っ白になった時にまずやることはデバッグモードで確認することです。
http://gatespace.jp/2012/07/20/wordpress-debugging/<?php $events = $_POST['eventID']; $my_page = get_page($events); $goods = $my_page->post_title; echo "<p style=\"display:none;\" id=\"goods\">". esc_html($goods)."</p>"; ?>
デバッグモードで確認するまでもなく、真っ白になる原因でアヤシいのはここですね
$my_page->post_title
$my_pageがオブジェクトじゃないのにオブジェクトのプロパティを参照しているからエラーになってるんじゃないかと思います。ぼくは下記のように変えた方がいいと思います。
<?php $events = $_POST['eventID']; $my_page = get_post($events); $goods = (is_object($my_page)) ? $my_page->post_title : ''; echo "<p style=\"display:none;\" id=\"goods\">". esc_html($goods)."</p>"; ?>
get_post関数でWP_Postオブジェクトがちゃんと取得できたかどうか確認しています。get_pageをget_postに変えたのは単に好みです。中身は全く同じですので
hissyさん、早速ご指導ありがとうございました!
「真っ白になった時にまずやることはデバッグモード」を心がけます!
WPの関数についてまだ理解できていませんが、教えていただいた方法で挑戦して後ほど報告します。
ところで、hissyさんのブログで説明している「シンプルで楽な方法」について質問をさせていただきます:
前半のコードの中にある「’/form’」はこちらでいう「’/contact’」ですよね、設置してリンクを押すと「Not Found」ページが出てくるのはなぜでしょうか?
また、「trust-form-tpl-123.php」には、イベント名の「foreach」一文をその位置に、そのまま追加すればよろしいでしょうか?
度々すみません、よろしくお願いいたします。前半のコードの中にある「’/form’」はこちらでいう「’/contact’」ですよね、設置してリンクを押すと「Not Found」ページが出てくるのはなぜでしょうか?
パーマリンク設定は何にしていますか?デフォルトでは動かないやりかたにしています。
また、「trust-form-tpl-123.php」には、イベント名の「foreach」一文をその位置に、そのまま追加すればよろしいでしょうか?
そのまま追加でおっけです。「イベント名」というフィールドを探しているので、今回自動で入れたいのが「商品名」なら、そのように変える必要があります 😉
hissyさん、早速お返事ありがとうございます!
パーマリンク設定は「月と投稿名」で設定していますが、分かりやすいほうに変更可能です。今回自動で入れたいのが「商品名」なら、そのように変える必要があります
了解いたしました。ありがとうございます!
よろしくお願いいたします。パーマリンク設定は何にしていますか?デフォルトでは動かないやりかたにしています。
パーマリンク設定を「カスタム構造」に変えれば…ですか? やってみます!
home_url('/contact')
は http://www.example.com/contact に変換されます。このアドレスでアクセスできない場合は意味が無いです。実際のページのスラッグに合わせてください。hissyさん、早速ありがとうございます!
このアドレスでアクセスできない場合は意味が無い
「contact」ページにはフツウにアクセスできますが…<(´^`;)>?…
実際のページのスラッグ
「[trust-form id=123]」を貼っている「contact」のスラッグですよね? スラッグは確かに「contact」ですが…(@@;)…どこかがズレてますか?!
hissyさんのいう「実際のページのスラッグ」はどのように解釈しますか? 度々申し訳ございません!「[trust-form id=123]」を貼っている「contact」のスラッグですよね? スラッグは確かに「contact」です
それなら問題ないです
hissyさん、お返事ありがとうございます!
それなら問題ないです
少しホッとしました!ε-(´。`;)
ところが、パーマリンク設定を「投稿名」に設定していますが、遷移元../myblog/store/goods-1/
ページの「フォームへ」リンクを押すと、やはり「Not Found」ページが現れ、アドレスバーには../myblog/store/goods-1/<?php%20echo%20$link;%20?>
になっています。
何度もすみませんが、パーマリンク設定が「投稿名」の時でも「home_url(‘/contact’)」は通用するでしょうか?「イベント名」というフィールドを探しているので、今回自動で入れたいのが「商品名」なら、そのように変える必要があります 😉
そして、こちらについても確認させていただきます。
Trust Formの編集ページにて「trust-form-123」の「入力画面」の上方に「商品名」というテキストボックスを追加すれば、遷移元から訪れる際、あらかじめ商品名の「goods-1」が自動的にフィールドに入力されている、という仕組みですよね?お忙しいところありがとうございます!もう少しよろしくお願いいたします!
リンク部分の下記コードですが、投稿の中に書いていませんか?PHPなので、テンプレート側に書く必要があります。
<?php $link = home_url('/form') .'?event_name=' .esc_attr(get_the_title()); ?> <a href="<?php echo $link; ?>">イベント参加申し込みフォーム</a>
hissyさん、ありがとうございます!
お陰さまで作動しましたよ! しかし、商品名欄には「contact」ページのタイトル「お問い合わせ」になってしまいました! でも感動!! hissyさんに感謝です~d(⌒o⌒)b~!
あと一息ですo(‘▽’o)~!
「contact」ページと同じ階層にある「store」ページの下の「goods-1」商品ページに、「申し込みフォームへ」のリンクを貼り、「goods-1」商品ページのタイトルを商品名欄に入れたい場合、home_url(‘/store/goods-1’)にすればよろしいですね? 試してみます!hissyさん、度々申し訳ございません
仕組みとしては、かならず「goods-1」商品ページに直接ズラリとお問い合わせフォームが付くような配置になるのでしょうか?
商品ページとは別に「申し込みフォーム」があって、商品ページに「申し込みフォームへ」のリンクを貼り、押すと「グッズ-1」商品ページのタイトルが「申し込みフォーム」の商品名欄に入る、というような仕組みに変えることも可能でしょうか?よろしくお願いいたします。
hissyさん、お陰さまでだいぶ手間が省けそうです\(=^O^=)/ ありがとうございます!
前回の投稿はこちらの勘違いでした! 大変失礼いたしました!(_ _|||)
最初は、教えていただいた2つのコードを同じテンプレートに入れたため、商品ページとフォームがおかしな動作関係になってしまいました。
今は「リンク部分」と「商品名」の2つのテンプレートに分けました。うまく機能しましたが、下記「リンク部分」のテンプレートの直し方(内容の減らし方)について不安ですので、再度ご教示をいただきたいと思います。<?php $link = home_url('/contact') .'?event_name=' .esc_attr(get_the_title()); ?> <a href="<?php echo $link; ?>">お問い合わせフォームへ</a> <?php function trust_form_show_input() { global $trust_form; $col_name = $trust_form->get_col_name(); $validate = $trust_form->get_validate(); $config = $trust_form->get_config(); $attention = $trust_form->get_attention(); $nonce = wp_nonce_field('trust_form','trust_form_input_nonce_field'); } ?>
上記「リンク部分」テンプレートの中身を結構減らしました。「$html = <<<EOT」から、「function trust_form_show_confirm() 」、そして「function trust_form_show_finish() 」に至るまでのコードを全部削除しましたが、問題ないでしょうか?
hissyさんの親切なご指導に感謝いたします!大変助かりました!
度々申し訳ございません、よろしくお願いいたします。
- トピック「どのページ(商品)からのお問い合わせかが分かる方法」には新たに返信することはできません。