워드프레스 컨택트 폼 7과 케이보드 연동하기 소스

댓글 남기기
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

워드프레스 무료 폼메일 플러그인인 Contact Form 7을 사용하면 사용자/고객으로부터 문의를 받을 수 있는 컨택트 폼을 만들 수 있습니다. Contact Form 7에서 제출하는 데이터는 DB에 저장되지 않습니다.

만약 DB에 저장되도록 하고 싶다면 같은 개발자가 만든 Flamingo라는 애드온 플러그인을 설치할 수 있습니다. 또는, Quform 같은 유료 플러그인을 사용하는 것도 고려해볼 수 있습니다.

참고로 단순히 보여주기 위한 목적으로 컨택트 폼 7에서 제출한 데이터를 프런트엔드에 표 형식으로 표시하고 싶은 경우 "워드프레스 Contact Form 7 데이터 표시하기"에서 소개하는 방법을 사용할 수 있습니다. 그러면 아래에서 설명하는 방식과 같이 Kboard 게시판을 설치할 필요가 없이 다음 영상과 같이 구현할 수 있습니다.

[ 이 글은 2020년 10월 11일에 최종 업데이트되었습니다. ]

워드프레스 컨택트 폼 7과 케이보드 연동하기 소스

케이보드(Kboard) 게시판을 운영하고 있다면 Contact Form 7에서 제출한 데이터를 케이보드 게시글로 연동하는 것이 가능합니다.

다음 코드를 이용하면 컨택트 폼을 작성하여 사용자가 제출을 클릭하면 데이터를 케이보드 게시글로 저장한 후에 이메일로 전송됩니다. 코드를 사용 중인 테마의 함수 파일(functions.php)에 추가하시기 바랍니다. (차일드 테마를 이용하시기 바랍니다.)

/* Contact Form과 kboard 연동 */
function action_wpcf7_before_send_mail($WPCF7_ContactForm)
{
global $wpdb;
$wpcf7 = WPCF7_ContactForm::get_current();
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();

$yourname = $data['your-name'];
if(isset($data['your-subject'])) {
$formtitle = '[서비스 문의] ' . $data['your-subject'];
} else {
$formtitle = '후원 문의 (' . $yourname . ')';
}

$email = $data['your-email'];
$current_date = date("YmdHis", current_time('timestamp'));
$thiscontent = $data['your-message'];
$telephone = $data['your-phone'];
$yoururl = $data['your-url'];
$inquirytype = $data['inquiry-type'];
$main_content = '<table width="100%" border="1" cellspacing="0" cellpadding="6" BORDERCOLOR="#E8E8E8">
<tr>
<td width="23%">제목</td>
<td width="77%">' . $formtitle . '</td>
</tr>
<tr>
<td width="23%">이름</td>
<td width="77%">' . $yourname . '</td>
</tr>
<tr>
<td>이메일</td>
<td>' . $email . '</td>
</tr>
<tr>
<td>연락처</td>
<td>' . $telephone . '</td>
</tr>
<tr>
<td>URL</td>
<td>' . $yoururl . '</td>
</tr>
<tr>
<td>문의 유형</td>
<td>' . $inquirytype . '</td>
</tr>
<tr>
<td>문의 내용</td>
<td>' . $thiscontent . '</td>
</tr>

</table>';

$table_name = $wpdb->prefix . "kboard_board_content";
$wpdb->insert( $table_name, array( 'board_id' => 1, 'member_display' => $yourname, 'password' => 'password_you_want', 'title' => $formtitle, 'content' => $main_content, 'parent_uid' => 0, 'category1' => '일반', 'date' => $current_date, 'member_uid' => 0, 'comment' => 0, 'vote' => 0, 'like' => 0, 'unlike' => 0, 'secret' => true, 'view' => 0, 'thumbnail_file' => false, 'thumbnail_name' => false, 'category2' => false, 'search' => 1, 'notice' => false) );

// return current cf7 instance
return $wpcf7;
}
add_action('wpcf7_before_send_mail', 'action_wpcf7_before_send_mail', 10, 1);

케이보드 게시판 ID, 비밀번호 등은 적절히 설정하시기 바랍니다. 필드에 따라 조금씩 응용하셔야 합니다. 옵션 필드를 추가한 경우에는 다음과 같이 연동시킵니다.

$content_uid = $wpdb->insert_id;

$wpdb->insert( $table_name, array( 'content_uid' => $content_uid, 'option_key' => company, 'option_value' => $yourcompany ) );

이 방법을 이용하면 케이보드뿐만 아니라 컨택트 폼 데이터를 다른 DB 테이블에도 추가할 수 있습니다.

위의 코드는 Contact Form 7와 Kboard가 업데이트되는 경우 잘 작동하지 않을 수도 있습니다. 하지만 원리는 동일하기 때문에 적절히 변경하여 사용하시기 바랍니다.

비슷한 방법으로 Gravity와 Quform으로 작성한 컨택트 폼에서 케이보드로 연동하는 것도 가능합니다.

컨택트 폼에서 케이보드로 연동하는 작업에 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.

참고:



댓글 남기기

Leave a Comment