お問い合わせフォームでwordpressのユーザーを選択して、登録されているメールアドレスにメールを送信する方法です。
フォームのテンプレートにセレクトボックスを追加
ユーザー選択してください<span class="red">*</span>
[select* contact-user include_blank]
selectの後ろに「*」をつけることで必須項目になります。
「include_blank」を指定すると選択の初期値が「- – -」となります。
セレクトボックスにwordpressユーザーを追加
function.phpに下記の内容を追加します。
add_filter( 'wpcf7_form_tag', 'custom_wpcf7_form_tag', 11, 2 );
function custom_wpcf7_form_tag( $scanned_tag, $replace ) {
$_reset_postdata = false;
if(!empty($scanned_tag)){
if($scanned_tag['name'] == 'contact-user')
{
$args = array(
'role' => 'author'
);
$users = get_users($args);
foreach ( $users as $user ) {
$scanned_tag['values'][] = $user->ID;
$scanned_tag['labels'][] = $user->display_name;
}
$_reset_postdata = true;
}
}
if($_reset_postdata)
{
wp_reset_postdata();
}
return $scanned_tag;
}
get_usersで投稿者(author)の一覧を取得しセレクトボックスに追加しています。
選択したユーザー宛てにメールを送信
function.phpに下記の内容を追加します。
add_action('wpcf7_before_send_mail', 'custom_wpcf7_before_send_mail', 1, 1);
function custom_wpcf7_before_send_mail($cf7)
{
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();
$user_info = get_userdata($data['contact-user'][0]);
if($user_info)
{
$mail = $cf7->prop('mail');
// 送信先メールアドレスの上書き
$mail['recipient'] = $user_info->user_email;
$cf7->set_properties( array( 'mail' => $mail ));
}
return $cf7;
}
該当ユーザーが見つからなければ、送信先は上書きしないのでコンタクトフォームで設定された送信先メールアドレス宛に送信されます。