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

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

ただいまの
回答率

88.92%

WordPress Contact Form7 チェックボックスのパイプ以前の値をDBに記録したい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,587

keynyon

score 7

いつもお世話になっております。

Contact Form7で、チェックボックス(複数選択可)の選択項目によってメール送信先を振り分けるフォームを作成しております。

「お問い合わせ」フォーム

<p>お問い合わせ項目</p>
[checkbox* theme "テーマ1|aaa@sample.co.jp" "テーマ2|bbb@sample.co.jp" "テーマ3|ccc@sample.co.jp"]

送信メール内容

【お問い合わせ項目】
[_raw_theme]

メール送信先

[theme]


複数のメールアドレスへの振り分けも問題なくできております。

ただ、Contact Form DBに記録される値を「お問い合わせ項目」にしたいのですが
たとえば、「テーマ1」「テーマ2」「テーマ3」を選択した場合、DBに記録される値は
「aaa@sample.co.jp,bbb@sample.co.jp,ccc@sample.co.jp」となってしまいます。
こちらを「テーマ1,テーマ2,テーマ3」と記録させることは可能なのでしょうか?

こちらを参考にfunctions.phpに以下コードを追記してみたのですが、何も変化がありませんでした。

function myFilter($formData) {
// Change $formData
return $formData; // be sure to return it
}

add_filter('cfdb_form_data', 'myFilter');

function location_form_handler($formData)
{
$formName = 'お問い合わせ';
$fieldName = 'theme';
if ($formData && $formName == $formData->title && $formData->scanned_form_tags) {
    $emailSelected = $formData->posted_data[$fieldName];
    $valueSelected = null;
    foreach ($formData->scanned_form_tags as $tag) {
        if ($tag['name'] == $fieldName) {
            foreach ($tag['raw_values'] as $rawValue) {
                // value|email
                $valuesArray = explode('|', $rawValue);
                if (count($valuesArray) == 2 && $valuesArray[1] == $emailSelected) {
                    $valueSelected = $valuesArray[0];
                    break;
                }
            }
        }
        if ($valueSelected != null) {
            break;
        }
    }
    if ($valueSelected != null) {
        $formData->posted_data[$fieldName] = $valueSelected;
        $formData->posted_data[$fieldName . '_email'] = $emailSelected;
    }
}
return $formData;
}
add_filter('cfdb_form_data', 'location_form_handler');

先日、こちらで解決方法をご教示いただいたのですが、
仕様がチェックボックスに変更になったため、改めて質問させていただきました。

PHPの知識が乏しく、まったく方法がわかりません。
contact form DBにこだわる必要はなく、Excel出力ができれば問題ございませんので
何か他のプラグインや方法がございましたら、ご教示いただけますと幸いです。
(CF7の使用は必須です)

WP ver.4.1.13
Contact Form7 ver.4.1.1
Contact Form DB ver.2.8.35

どうぞよろしくお願いいたします。

+++++ 追記 +++++
マルチポストのルールについてご指摘いただきました。
Wordpressフォーラムでも同様の質問を投稿をしてしまいましたが、削除ができないため、こちらにリンクを貼ります。
https://ja.wordpress.org/support/topic/wordpress-contact-form7-%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E3%83%91%E3%82%A4%E3%83%97%E4%BB%A5%E5%89%8D%E3%81%AE%E5%80%A4%E3%82%92db%E3%81%AB%E8%A8%98/
解決の際には記載させていただきます。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

まだ回答がついていません

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る