Help us understand the problem. What is going on with this article?

WordPress プラグイン slack-contact-form-7 で入力内容まで Slack に送るプチハック

Slack はなかなか便利

Slack を業務で使っている。U/Iは馴染めないけれど、カスタマイズ方法が提供されてて、ツールも豊富。

サイトは WordPress を使っている

CMSなんで編集もしやすいしプラグインもテーマも揃っている。(バージョンアップが頻繁過ぎるのが玉に瑕だけど)
そうなると、問い合わせフォームはどうしても珠玉の名作 Contact-form-7プラグイン とかになる。
折角 Slack を使っているんだから問い合わせも通知させたいよね。

問い合わせ時に Slack に通知する

ということで
Slackプラグイン + Contact-form-7 + Slack-contact-form-7プラグイン を入れると問い合わせ時に Slack に通知はされる。
されるのだが・・・

Someone just sent a message through *コンタクトフォーム 1* _Contact Form 7_. Check your email!
送られてくるのなんかタイトルだけじゃん!?

これでメールを見に行くのは2度手間なのでプチハックする。

注1:Slackプラグインの設定で ☑When someone sent message through Contact Form 7 にチェックすること。
注2:Webhook のURL は、右URLから取得可能: https://slack.com/services/new/incoming-webhook

通知だけじゃなく入力内容も送るプチハック

wp-content/plugins/slack-contact-form-7/slack-contact-form-7.php を以下の様に修正する。

            if ( $sent ) {
+               $submission = WPCF7_Submission::get_instance();
+               $formdata = $submission->get_posted_data();
+               $contents = '';
+               foreach ($formdata as $key => $val) {
+                   if (substr($key, 0, 1) != '_') {
+                       if ( is_array($val) ) {
+                           $contents .= $key . ':' . implode(',', $val) . "\n";
+                       } else {
+                           $contents .= $key . ':' . $val . "\n";
+                       }
+                   }
+               }

                return apply_filters( 'slack_wpcf7_submit_message',
-                   sprintf(
-                       __( 'Someone just sent a message through *%s* _Contact Form 7_. Check your email!', 'slack' ),
-                       is_callable( array( 
-                       $form, 'title' ) ) ? $form->title() : $form->title
-                   ),
+                   $contents,
                    $form,
                    $result
                );
            }

contact-form-7 のインスタンスから内容を取得する。
キーが _wpcf7* みたいなのはコントロールっぽいので除外する。
後は、タイトルを送っているところを丸っと消して、結合した内容を送信すればOK。

これでメールを開く手間をかけずに #Slack だけで内容を確認できるようになりました。

一応、こんな感じで slack のチャンネルに送られる。

your-name:a
your-email:b@c.com
your-subject:d
your-message:e
your-checkbox:a,b
your-radio:1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした