将WordPress的帖子表单数据注册到kintone中
首先有时候,我想将使用WordPress创建的网站表单数据注册到某个数据库中。
这次我使用Docker在本地搭建了WordPress环境,通过ContactForm7插件的联系表单,尝试将记录注册到kintone中。
構建WordPress環境使用Docker构建WordPress环境。
请参考以下内容进行Docker的安装。
-
- https://www.docker.com/
- https://docs.docker.com/compose/wordpress/
只需安装Docker并在docker-compose.yml文件中用JSON编写配置。
我会把这次的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: {}
作曲家的设置安装我是在2019年9月14日(星期六)参加的PHP学习会「静冈.php」上了解到了Composer的存在。它类似于Ruby的gem和Node的npm,可以帮助管理库的依赖关系。
请参考以下内容进行设置。
- https://getcomposer.org/doc/00-intro.md
请将docker-compose设置到目录中后,库将被安装在vendor目录下。
请使用Docker挂载vendor目录。
PHP dotenv 的设置将Ruby的dotenv库转换为PHP版本,使其能够从外部的配置文件中读取kintone的API令牌等内容。
请参考以下设置步骤。
- https://github.com/vlucas/phpdotenv
请对接触表格7插件进行设置。WordPress的联系表单插件
安装请参阅下面的设置。
- https://ja.wordpress.org/plugins/contact-form-7/
kintone应用开发我会创建一个用于注册WordPress联系表单数据的应用程序。
将WordPress表单数据注册到金融应用程序中。
使用Contact Form 7的wpcf7_before_send_mail动作挂钩来获取表单数据,并使用wp_remote_post函数将数据注册到kintone。
请参阅以下详细内容。
-
https://contactform7.com/ja/2018/01/31/contact-form-7-50/
-
https://contactform7.com/ja/2014/07/02/contact-form-7-39-beta/
https://codex.wordpress.org/Function_Reference/wp_remote_post
将函数.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');
通过Action Hook获取的表单数据,使用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);
请参考以下网站
我参考了下面的链接。
-
kintoneとWordPressの連携ネタ三題噺
WordPress で Kintone の API へアクセスする
将WordPress表单数据注册到金融应用程序中。
使用Contact Form 7的wpcf7_before_send_mail动作挂钩来获取表单数据,并使用wp_remote_post函数将数据注册到kintone。
请参阅以下详细内容。
-
- https://contactform7.com/ja/2018/01/31/contact-form-7-50/
-
- https://contactform7.com/ja/2014/07/02/contact-form-7-39-beta/
- https://codex.wordpress.org/Function_Reference/wp_remote_post
将函数.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');
通过Action Hook获取的表单数据,使用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);
请参考以下网站
我参考了下面的链接。
-
kintoneとWordPressの連携ネタ三題噺
- kintoneとWordPressの連携ネタ三題噺
- WordPress で Kintone の API へアクセスする