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

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

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

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

PHP

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

Q&A

解決済

1回答

2532閲覧

WordPressのMW WP FORMの自動返信メール(functions.php)で表示されない

h326

総合スコア1

WordPress

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

PHP

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

0グッド

1クリップ

投稿2021/06/04 05:35

編集2021/06/04 08:06

前提・実現したいこと

WordPressのプラグインMW WP FORMを使用しています。functions.phpにフィルターフックを追加して
複数あるカタログのダウンロードURLを希望のあったカタログの分だけ自動返信メールで案内したいです。

フォーム側ではチェックボックスでダウンロードを希望するカタログが選択できるようになっています。

発生している問題

チェックボックスから一つだけ選択した場合は正常に表示されるのですが、複数選択すると表示されません。

該当のソースコード

function my_mail( $Mail, $values, $Data ){ if( $Data->get( 'カタログ' ) == '製品A' ){ $Mail->body .= $Data->get( 'カタログ' ) . "\n" . home_url() . 'item1.html' . "\n" . "\n"; } if( $Data->get( 'カタログ' ) == '製品B' ){ $Mail->body .= $Data->get( 'カタログ' ) . "\n" . home_url() . 'item2.html' . "\n" . "\n"; } if( $Data->get( 'カタログ' ) == '製品C' ){ $Mail->body .= $Data->get( 'カタログ' ) . "\n" . home_url() . 'item3.html' . "\n" . "\n"; } return $Mail; } add_filter( 'mwform_auto_mail_mw-wp-form-XXXX', 'my_mail', 10, 3 );

WordPress、PHPともに初心者で色々と調べながらやってみたのですが、
どうにもならず困っています。

よろしくお願いいたします。

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

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

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

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

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

CHERRY

2021/06/04 08:58

> チェックボックスから一つだけ選択した場合は正常に表示されるのですが、複数選択すると表示されません。 どのようになるのでしょうか。 具体的な例を記載していただけないでしょうか。
h326

2021/06/06 22:37

質問ありがとうございます。 正常に表示される場合は、自動返信メールに ---------------------------------- 製品A https://xxxx.co.jp/item1.html ---------------------------------- とメールに表示されます。 しかし、複数選択すると ---------------------------------- ---------------------------------- となり何も表示されません。 複数選択した場合は、 ---------------------------------- 製品A https://xxxx.co.jp/item1.html 製品B https://xxxx.co.jp/item2.html ---------------------------------- と表示するようにしたいのですが、、、 以上、よろしくお願いします。
guest

回答1

0

ベストアンサー

たぶん、今フォームタグの設定は

[mwform_checkbox name="カタログ" children="製品A,製品B,製品C" separator=","]

こんな感じだと思うのですが、それを

[mwform_checkbox name="カタログA" children="製品A" separator=","] [mwform_checkbox name="カタログB" children="製品B" separator=","] [mwform_checkbox name="カタログC" children="製品C" separator=","]

として、function my_mailの「カタログ」をそれぞれ「カタログA」「カタログB」「カタログC」に変更すればいいのではないでしょうか。

同じnameで複数設定すると、返り値を見るとわかると思いますが、例えば、AとBを選択すると「製品A,製品B」とかになっているので判定できていないのだと思います。

参考まで。

追記

function my_mail( $Mail, $values, $Data ){ $value = $Data->get( 'カタログ' ); $goods_list = array( '製品A', '製品B', '製品C' ); foreach ( $goods_list as $goods ) { if ( strpos( $value, $goods ) !== false ) { if( $goods == '製品A' ) { $Mail->body .= '製品A' . "\n" . home_url() . 'item1.html' . "\n" . "\n"; } if( $goods == '製品B' ) { $Mail->body .= '製品B' . "\n" . home_url() . 'item2.html' . "\n" . "\n"; } if( $goods == '製品C' ) { $Mail->body .= '製品C' . "\n" . home_url() . 'item3.html' . "\n" . "\n"; } } } return $Mail; } add_filter( 'mwform_auto_mail_mw-wp-form-xxxx', 'my_mail', 10, 3 );

これでもいけるかも?

投稿2021/06/07 08:13

編集2021/06/08 02:25
8-0_nyan5

総合スコア2352

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

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

h326

2021/06/07 09:00

ご回答ありがとうございます。 バリデーションルールでカタログ選択を必須項目にしているのですが、 それぞれにnameを設定した場合、それぞれに必須の判定がされてしまわないでしょうか?
8-0_nyan5

2021/06/07 09:10

なら、選択されるパターン分判定させるしかないのでは?
h326

2021/06/07 09:29

アドバイスいただいた方法でできました! ありがとうございました!
h326

2021/06/08 04:07

追記ありがとうございます! うまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問