Contact Form 7の文面をfilterでいじる

WordPressを使ってお問合せフォームといえばContact Form 7というぐらいに定番になっているかと思いますが,単純なお問合せフォームでも色々と条件分岐したり,置換してみたりしたいことが出てきます。
条件分岐や置換の部分をPHPで書けば良いのですが,さてそのフィルタをどこに入れようかと,ソースを追いかけると,ちゃんと用意されておりました。

contact-form-7/includes/class.php 内の compose_mail 内で

$components = compact(
  'subject', 'sender', 'body', 'recipient', 'additional_headers', 'attachments' );
$components = apply_filters_ref_array( 'wpcf7_mail_components',
  array( $components, &$this ) );
extract( $components );

というのがありましたので,テーマ内のfunctions.phpにこんな感じで追加

add_filter('wpcf7_mail_components', 'my_mail_filter',10,2);
function my_mail_filter( $components, $cf7) {
  $lines=explode("\n",$components['body']);
  $newbody='';
  foreach($lines as $l){
    //行毎に分解して処理する感じのコード
    //例えば半角カナを全角に変換とか
    $newbody.=mb_convert_kana($l,'aKV')."\n";
  }
  $components['body']=$newbody;
  return $components;
}

あとは自分の関数内で書き放題ということで。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください