質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1650閲覧

Contact Form 7に値を渡す方法について

akuc

総合スコア12

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/09/20 06:38

編集2018/09/20 09:14

前提・実現したいこと

WordPress 4.9.8にてContact Form 7(バージョン 5.0.4)を利用したフォームを作成しております。

そこにカスタムフィールドの値を渡す方法として、以下サイトなどを参考に、functions.phpに記載をおこないました。
http://bit.ly/2PLR5Ay

こちらの内容の通り、textフィールドについては問題なく値の引き渡しができたのですが、
radio,selectフィールドの値の引き渡しができず困っています。

$_GETを利用すれば可能かと思われますが、radio,selectフィールドが複数あり、URL上での記載は
あまりしたくないのが現状です。

$_POSTタグを利用し、上記参考サイトのように、複数のフィールドを設定する方法、もしくは参考サイトをご教示いただけないでしょうか。

カスタムフィールド 例)
性別(sex) ・・・ 男/女
区分(kubun) ・・・ 新卒/中途
勤務地(kinmuchi) ・・・ 都道府県リスト
お住まい(osumau) ・・・ 都道府県リスト
など

以上、よろしくお願いいたします。

実際のソース

Contact Form 7 上
・ラジオボタン

php

1 [radio sex use_label_element "男" "女"]

・セレクトボタン

php

1[select* kinmuchi class:form-control "北海道" "青森県" 〜と都道府県リストを記載 ]

個別記事テンプレート(Contact Form 7 へhiddenでデータ渡す

php

1$user = wp_get_current_user(); 2$sex = $user -> sex; 3$kinmuchi = $user -> kinmuchi; 4<form action="<?php echo esc_url( home_url( '/entry/' ) ); ?>" method="post"> 5<input type="hidden" name="sex" value="<?php echo $sex; ?>"> 6<input type="hidden" name="kinmuchi" value="<?php echo $kinmuchi; ?>"> 7<div class="entry-button"><input type="submit" value="エントリーする"></div> 8</form>

functions.php

php

1function my_form_tag_filter($tag){ 2if ( ! is_array( $tag ) ) 3return $tag; 4 5if(isset($_POST['sex'])){ 6$name = $tag['name']; 7if($name == 'sex') 8$tag['values'] = (array) $_POST['sex']; 9} 10 11if(isset($_POST['kinmuchi'])){ 12$name = $tag['name']; 13if($name == 'kinmuchi') 14$tag['values'] = (array) $_POST['kinmuchi']; 15} 16 17return $tag; 18} 19add_filter('wpcf7_form_tag', 'my_form_tag_filter');

補足情報(FW/ツールのバージョンなど)

WordPress 4.9.8
Contact Form 7(バージョン 5.0.4)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/09/20 08:30 編集

select/checkbox/radiobutton のデフォルト値の設定は、記載方法が異なりますが、実際にテンプレートに記載した (名前などは変更・マスクしても大丈夫ですので、)ソースコードの内容を記載することは可能でしょうか?
akuc

2018/09/20 08:50

回答ありがとうございます。ソースを追加いたしましたのでご確認いただけますでしょうか。
guest

回答1

0

Contact Form 7 のドキュメント Checkbox、Checkbox*、Radio - Contact Form 7 をみると checkbox や radio や select(ドロップダウンメニュー)では、 options の default で値を設定しますので、

$tag['values'] = (array) $_POST['sex'];

は、

$tag['options'] = (array) ("default:" . $_POST['sex']);

のようになるのではないかと...

投稿2018/09/25 05:07

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akuc

2018/09/25 06:30

こちらの件、回答いただきありがとうございます。 いただいた内容を試してみましたが、意図したような形にはなりませでした。。。 optionsのdefault が設定されず 未選択のままの状態となります。 お手数をおかけいたしますが、再度ご教示いただけないでしょうか。
CHERRY

2018/09/25 14:03

ちょっと環境を用意して試してみますね。
akuc

2018/09/26 01:04

わざわざありがとうございます。 大変お手数をおかけいたしますが、よろしくお願いいたします。
CHERRY

2018/09/26 02:29

環境は構築できたのですが、「checkbox や radio ボタンだと wpcf7_form_tag フックが呼ばれない?」という現象が出ていて悩み中です。ソースコードを読んだりしないとダメな状態だとすれば、かなり時間がかかりそうです。
akuc

2018/09/27 04:56

なるほど。。 そうですか、お手数をおかけいたしますが、できる範囲で検証いただければ助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問