Edited at

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度手間なのでプチハックする。


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

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) != '_') {
+ $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 だけで内容を確認できるようになりました。