Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?
@nekyo

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

More than 1 year has passed since last update.

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
10
Help us understand the problem. What is going on with this article?
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
nekyo

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
10
Help us understand the problem. What is going on with this article?