トピック投稿者
imap
(@ixt220)
MW WP Formの過去のフォーラムを確認し、つぎはぎしながら試していますが、
メールは届くのですが、チェックボックスの中身を正しく判別できません。
function my_admin_mail( $Mail, $values, $Data ) {
if ( !is_null( $Data->get('field_name') )) {
$my_Mail = clone $Mail;
$my_Mail->subject = '確認テストメール';
$my_Mail->to = 'aaa@hoge';
if ( in_array( 'AAA', $Data->get('field_name') )) {
$mail_body = 'AAAが入っている';
} else {
$mail_body = 'AAAが入っていない!!';
}
$my_Mail->body .= $mail_body;
$my_Mail->send();
}
return $Mail;
}
add_filter( 'mwform_admin_mail_mw-wp-form-XXX', 'my_admin_mail', 10, 3 );
チェックボックス(field_name)は
・AAA
・BBB
・CCC
があり、テストではAAAとBBBにチェックを入れて送信しています。
届くメールには、「AAAが入っていない!!」のメッセージがあり、in_arrayの部分で中身を判別できていなそうなのですが、ここでつまづいております。
これを
if ( in_array( ‘AAA’, $Data->get(‘field_name’) ))
↓↓↓
if ( in_array( ‘AAA’, $values[‘field_name’][‘data’] ))
にしてみましたが、うまくいきませんでした。
どなたかご教示頂けると幸いです。
宜しくお願い致します。
function my_admin_mail( $Mail, $values, $Data ) {
var_dump( $Data->get('field_name') ); exit;
のようにコードを書き変えて送信すると、どのような値が送信されているか確認できると思います。チェックを入れて送信し、表示された値を書き込んでいただけますか?
トピック投稿者
imap
(@ixt220)
Takashi Kitajima様
返信ありがとうございます。
上記のコードを入力したところ、下記のように表示されました。
string(半角数字) "AAA,BBB"
チェックした値はちゃんと表示されております。
トピック投稿者
imap
(@ixt220)
Takashi Kitajima様
お世話になっております。
$Data->get(‘field_name’)で返される値は文字列ということでしょうか?
配列$aryに入れて、in_arrayで判別し、
下記のようなコードにしたらうまくいきました。
$ary = explode(",", $Data->get('field_name') );
if ( in_array( 'AAA', $ary )) {
$mail_body = 'AAAが入っている';
} else {
$mail_body = 'AAAが入っていない!!';
}
うまく値を判別し条件分岐できたのですが、これで大丈夫でしょうか?
そもそもPHPの中身やプラグインの構造など根本的な部分を理解せず、
つぎはぎしながら今回たまたまうまく条件分岐できましたが、
お問い合わせフォームという重要なページですので、これで大丈夫かまだ不安です。
エンジニアの皆様も分からない部分にぶつかった時、どのように解決されているのでしょうか?
表題と関係ない質問になってしまい申し訳ありません。
それで問題ないと思います!
MW WP Form の Data オブジェクトには get()、get_raw()、get_post_value_by_key() というメソッドがあり、それぞれ取得できるデータの形が微妙に違います。get() は実際にメールに挿入される形のデータを返すので文字列になります。
エンジニアの皆様も分からない部分にぶつかった時、どのように解決されているのでしょうか?
僕の場合、ググってもわからないときはコードを読みますね。例えば、今回なら
https://github.com/inc2734/mw-wp-form/blob/master/classes/models/class.data.php
をもとにコードを辿って行くと、なんとなくどういったデータが返されるのかがわかると思います。
それでも無理なときはあきらめます^^;
トピック投稿者
imap
(@ixt220)
Takashi Kitajima様
お世話になっております。
ご回答ありがとうございます。
返信が遅くなって申し訳ありません。
親切な対応およびご回答いただき誠にありがとうございます。
コピペではなく、コードを辿って見る癖をつけたいと思います。
今後とも宜しくお願い致します。