워드프레스 Quform 문의폼 데이터를 커스텀 DB 테이블에 저장하기

Last Updated: 2023년 07월 17일 | | 댓글 남기기

워드프레스 컨택트 폼 플러그인인 Quform으로 만든 문의폼을 통해 제출되는 데이터는 DB에 저장되도록 설정이 가능합니다. 또한, 커스텀 DB 테이블에 저장하도록 하는 옵션도 제공됩니다. 이 글에서는 워드프레스 Quform 문의폼 데이터를 커스텀 DB 테이블에 저장하는 방법에 대해 살펴보겠습니다.

[ 이 글은 2023년 3월 7일에 마지막으로 업데이트되었습니다. ]

워드프레스 Quform 문의폼 데이터를 커스텀 DB 테이블에 저장하기

Quform(큐폼)에서 데이터를 DB에 저장되도록 설정하면 데이터를 추출하기 다소 어려운 구조로 DB에 저장됩니다. 개별 문의폼 설정 페이지에서 커스텀 데이터베이스에 저장하도록 설정할 수 있습니다.

Quform의 커스텀 데이터베이스 설정 사용하기

폼 편집 화면에서 설정 아이콘(톱니바퀴 모양 아이콘) > Database를 클릭한 다음, Custom database settings (MySQL) 옵션을 Enabled로 설정하여 사용자 정의 DB에 폼메일 데이터를 저장할 수 있습니다.

워드프레스 Quform 문의폼 데이터를 커스텀 DB 테이블에 저장하기

Table 필드에 테이블명을 입력하고, 아래의 What to save 섹션에서 컬럼을 만들어서 문의폼 데이터를 매핑시킬 수 있습니다.

워드프레스 Quform 컨택트 폼 데이터를 커스텀 DB 테이블에 저장하는 방법

하지만 이 방법으로 커스텀 테이블을 만들어 테스트를 해보니 폼메일을 통해 제출된 데이터가 원하는 DB 테이블에 저장되지 않았습니다. 처음에는 FastComet이라는 웹호스팅에서 호스팅되는 사이트에서 테스트했는데, 이 방법이 작동하지 않아서 웹호스팅 특성을 타는 것이 아닌가 의심되었습니다. 하지만 Bluehost에서 호스팅되는 워드프레스 사이트에서도 테스트해보니 동일하게 데이터가 저장되지 않는 현상이 나타났습니다.

이 방법으로 데이터가 저장되지 않으면:

  1. Quform에 연락하여 지원을 요청하거나
  2. 아래의 "수동으로 만든 커스텀 DB 테이블에 Quform 데이터 저장하기"를 참고하여 수동으로 커스텀 DB 테이블을 만들고 테마 함수 파일에 Quform 데이터를 커스텀 DB 테이블에 저장하는 코드를 추가합니다.

이 방법을 이용할 경우 먼저 테스트를 하여 데이터가 제대로 저장되는지 체크해보시기 바랍니다.

수동으로 만든 커스텀 DB 테이블에 Quform 데이터 저장하기

위의 방법이 작동하지 않을 경우 수동으로 DB 테이블을 생성하여 Quform 데이터를 저장할 수 있습니다. 또한, 다른 플러그인에서 생성한 데이터베이스 테이블(예: 케이보드 게시판)에 저장하는 것도 가능합니다.

수동으로 데이터베이스 테이블을 만드는 방법은 "phpMyAdmin에서 데이터베이스 테이블 만들기"를 참고해보세요.

커스텀 DB 테이블이 준비되었다면 아래와 같은 코드를 테마의 함수 파일에 추가하도록 합니다.

차일드 테마를 만들어 차일드 테마 내의 함수 파일에 추가해야 추후 테마가 업데이트되어도 수정하거나 추가한 내용이 사라지지 않습니다.

add_filter('quform_post_process_1', function (array $result, Quform_Form $form) {
    global $wpdb;
 
    $data = array(
        'email' => $form->getValueText('quform_1_3'),
        'name' => $form->getValueText('quform_1_4'),
        'date' => $form->getValueText('quform_1_5'),
        'time' => $form->getValueText('quform_1_6'),
    );
 
    $wpdb->insert('my_table', $data);
 
    return $result;
}, 10, 2);

위의 코드에서...

  • 라인 1의 숫자 1을 폼 ID로 바꾸도록 합니다.
  • 라인 5에서 email을 첫 번째 DB 테이블 컬럼의 이름으로 교체합니다. 그리고 1_3은 이 컬럼에 저장되는 요소의 고유한 ID로 바꿉니다.
  • 라인 6~8에 대하여 동일한 과정을 반복합니다. 동일한 방식으로 더 많은 컬럼을 추가할 수 있습니다.
  • 라인 11에서 my_table을 데이터베이스 테이블 이름으로 변경하도록 합니다.

이 방법을 응용하여 Quform 문의폼에서 제출된 데이터를 케이보드 게시판의 게시글로 등록하는 코드를 만들 수 있습니다. 자세한 내용은 "워드프레스 Quform과 케이보드 게시판 연동 소스 코드"를 참고해보시기 바랍니다.

PHP 문법에 맞지 않게 코드를 넣으면 사이트에 오류가 발생합니다. 그런 경우 잘못된 PHP 코드를 수정하거나 코드를 삭제하면 사이트가 정상화될 것입니다.

마치며

이상으로 Quform 데이터를 커스텀 데이터베이스 테이블에 저장하는 방법에 대해 살펴보았습니다. Quform은 깔끔하고 꼭 필요한 기능을 제공하는 컨택트 폼 플러그인 같습니다. Quform에서 제공되지 않는 기능을 구현하는 개발 작업을 하는 경우라면 더 풍부한 기능을 제공하는 유명한 Gravity Forms가 적합할 수 있습니다.

참고로 무료 컨택트폼 플러그인인 WPForms Lite에서는 데이터를 DB에 저장하는 기능이 제공되지 않지만, 애드온 플러그인을 사용하여 디비에 저장하는 것이 가능합니다.

참고


댓글 남기기

Leave a Comment