WordPress 게시 양식 데이터를 kintone에 등록
13305 단어 PHPWordPress금과Composerdocker-compose
소개
WordPress로 만든 웹 사이트의 양식 데이터를 일부 데이터베이스에 등록하고 싶다는 경우가 있습니다.
이번에는 로컬로 Docker로 WordPress 환경을 만들고 플러그인에 ContactForm7을 사용한 문의 양식에서 kintone에 레코드를 등록해 보았습니다.
WordPress 환경 구축
Docker를 사용하여 WordPress 환경을 구축합니다.
Docker 설치는 아래를 참조하십시오.
Docker를 사용하여 WordPress 환경을 구축합니다.
Docker 설치는 아래를 참조하십시오.
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과 같은 라이브러리의 종속성을 관리해주는 라이브러리입니다.
설정은 아래 참조
docker-compse된 디렉토리로 설정하면 vendor 디렉토리 아래에 라이브러리가 설치됩니다.
Docker로 vendor 디렉토리를 마운트하십시오.
PHP dotenv 설정
Ruby dotenv의 PHP 버전. kintone의 API 토큰 등을 외부의 설정 파일로부터 읽어들이도록 합니다.
설정은 아래 참조
Contact Form 7 플러그인 설정
WordPress 문의 양식 플러그인
설정은 아래 참조
kintone 앱 만들기
WordPress 문의 양식 데이터를 등록하는 앱을 만듭니다.
WordPress 양식 데이터를 kintone 앱에 등록
Contact Form 7의 wpcf7_before_send_mail 액션 후크를 사용하여 양식 데이터를 검색하고,
wp_remote_post 함수로 kintone에 데이터를 등록합니다.
자세한 내용은 아래를 참조
Contact Form 7의 wpcf7_before_send_mail 액션 후크를 사용하여 양식 데이터를 검색하고,
wp_remote_post 함수로 kintone에 데이터를 등록합니다.
자세한 내용은 아래를 참조
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);
참고 사이트
아래의 링크를 참고로 했습니다.
Reference
이 문제에 관하여(WordPress 게시 양식 데이터를 kintone에 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sy250f/items/953898b36d34291da546텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)