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

0

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

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

Contact Form의 메시지를 관리해주는 Flamingo (워드프레스)

다른 방법으로, 케이보드(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가 업데이트되는 경우 잘 작동하지 않을 수도 있습니다. 하지만 원리는 동일하기 때문에 적절히 변경하여 사용하시기 바랍니다.

참고:

*일부 글에 제휴링크가 포함될 수 있습니다.기부를 통해 블로그 운영을 후원하실 수 있습니다.

Related Posts

댓글 남기기