WordPress 게시 양식 데이터를 kintone에 등록

소개



WordPress로 만든 웹 사이트의 양식 데이터를 일부 데이터베이스에 등록하고 싶다는 경우가 있습니다.

이번에는 로컬로 Docker로 WordPress 환경을 만들고 플러그인에 ContactForm7을 사용한 문의 양식에서 kintone에 레코드를 등록해 보았습니다.

WordPress 환경 구축



Docker를 사용하여 WordPress 환경을 구축합니다.

Docker 설치는 아래를 참조하십시오.
  • htps //w w. 도 c r. 코m/
  • htps : // / cs. 도 c r. 코 m / 코 m 포세 / / rdp s /

  • Docker를 설치하고 docker-compose.yml에 설정을 JSON으로 작성하기 만하면됩니다.

    이번 docker-compose.yml을 둡니다.

    docker-compose.yml
    version: '3.3'
    
    services:
       db:
         image: mysql:5.7
         volumes:
           - db_data:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wordpress
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
         container_name: db-container
       wordpress:
         depends_on:
           - db
         image: wordpress:latest
         ports:
           - "8000:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
           WORDPRESS_DB_NAME: wordpress
         volumes:
           - ./html:/var/www/html
           - ./vendor:/var/www/vendor
         container_name: wp-container
    volumes:
        db_data: {}
    

    Composer 설정



    2019년 9월 14일(토)의 PHP의 공부회 「 시즈오카. php 」에서 Composer 의 존재를 알았습니다.
    Ruby의 gem과 Node의 npm과 같은 라이브러리의 종속성을 관리해주는 라이브러리입니다.

    설정은 아래 참조
  • h tps : // 게이 t m 포세 r. rg/do c/00-인 t로. md

  • docker-compse된 디렉토리로 설정하면 vendor 디렉토리 아래에 라이브러리가 설치됩니다.
    Docker로 vendor 디렉토리를 마운트하십시오.

    PHP dotenv 설정



    Ruby dotenv의 PHP 버전. kintone의 API 토큰 등을 외부의 설정 파일로부터 읽어들이도록 합니다.

    설정은 아래 참조
  • htps : // 기주 b. 코 m / v ぅ 카 s / php 도텐 v

  • Contact Form 7 플러그인 설정



    WordPress 문의 양식 플러그인

    설정은 아래 참조
  • htps : // 그럼. rdp rs. 오 rg / p ㅅ 긴 s / 콘타 ct ぉ rm 7 /

  • kintone 앱 만들기



    WordPress 문의 양식 데이터를 등록하는 앱을 만듭니다.



    WordPress 양식 데이터를 kintone 앱에 등록



    Contact Form 7의 wpcf7_before_send_mail 액션 후크를 사용하여 양식 데이터를 검색하고,
    wp_remote_post 함수로 kintone에 데이터를 등록합니다.

    자세한 내용은 아래를 참조
  • htps : // 이런 ct후 rm7. 코 m/쟈/2018/01/31
  • htps : // 이런 ct후 rm7. 코 m / 그럼 / 2014/07/02 / 이런 ct-fu rm-7-39-beta /
  • htps : // 여기 x. rdp rs. 오 rg / 훈 c 치온 _ 레후 렌세 / wp_ 레모테 _ 포 st

  • functions.php에 액션 후크를 등록합니다.
    
    function add_cf7_form_data($wpcf7) {
        $submission = WPCF7_Submission::get_instance();
        if ( $submission ) {
            $posted_data = $submission->get_posted_data();
        }
        require get_template_directory() . '/inc/cf7-to-kintone.php';
        return $wpcf7;
    }
    add_action( 'wpcf7_before_send_mail', 'add_cf7_form_data');
    

    액션 후크에서 얻은 양식 데이터를 wp_remote_post 함수로 kintone에 등록합니다.
    
    <?php
    require_once '../vendor/autoload.php';
    $dotenv = Dotenv\Dotenv::create(__DIR__);
    $dotenv->load();
    
    function wpform_to_kintone($form_data) {
        $url = 'https://'. getenv('SUB_DOMAIN') . '.cybozu.com/k/v1/record.json';
        $request = array(
            "app" => getenv('APP_ID'),
            "record" => array(
                "お名前" => array("value" => $form_data['your-name']),
                "メールアドレス" => array("value" => $form_data['your-email']),
                "題名" => array("value" => $form_data['your-subject']),
                "本文" => array("value" => $form_data['your-message']),
            )
        );
        $args = array(
            'method' => 'POST',
            'headers' => array(
                'X-Cybozu-API-Token' => getenv('API_TOKEN'),
                'Content-Type' => 'application/json'
            ),
            'body' => json_encode( $request )   
        );
        $response = wp_remote_post( $url, $args);
        if ( is_wp_error( $response ) ) {
            $error_message = $response->get_error_message();
                error_log("Error: " . $error_message . "\n", 3, 'wp-to-kintone.log');
         } else {
                error_log("Success: " . $response['body'] . "\n", 3, 'wp-to-kintone.log');
            return $response;
         }
    }
    $res = wpform_to_kintone($posted_data);
    

    참고 사이트



    아래의 링크를 참고로 했습니다.
  • 킨톤과 워드프레스의 연계 소재 삼제지
  • WordPress에서 Kintone API에 액세스
  • 좋은 웹페이지 즐겨찾기