将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联系表单数据的应用程序。

スクリーンショット 2019-09-16 20.04.02.png

将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 へアクセスする

bannerAds