我正在尝试将联系表格 7 提交保存在数据库中。目前,我正在使用CFDB插件将它们保存在数据库中,但它以多行保存。
该插件为每个条目创建多行。我想制作联系表单 7(没有外部插件将信息保存在数据库中)为每个联系表单制作一行,列是联系表单的字段名称。
现在我正在使用透视SQL来根据需要显示它们,但是我需要根据需要直接保存它们(我联系了插件的作者寻求帮助,我正在等待回复)
SELECT
DATE_FORMAT(FROM_UNIXTIME(submit_time), '%b %e, %Y %l:%i %p') AS Submitted,
MAX(IF(field_name='Name', field_value, NULL )) AS 'Name',
MAX(IF(field_name='CardNum', field_value, NULL )) AS 'CardNum',
MAX(IF(field_name='Exp', field_value, NULL )) AS 'Exp',
MAX(IF(field_name='Amount', field_value, NULL )) AS 'Amount'
FROM wp_cf7dbplugin_submits
WHERE
form_name = 'Purchases'
GROUP BY submit_time
ORDER BY submit_time DESC
所以我在谷歌上搜索并找到了一个tut。
首先,我创建了一个表来将数据存储在数据库中:
CREATE TABLE `wp_tps_forms` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`form` varchar(100) NOT NULL DEFAULT '',
`data` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
然后我在当前函数上添加了一个操作.php文件:
add_action('wpcf7_before_send_mail', 'save_form' );
function save_form( $wpcf7 ) {
global $wpdb;
/*
Note: since version 3.9 Contact Form 7 has removed $wpcf7->posted_data
and now we use an API to get the posted data.
*/
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$submited = array();
$submited['title'] = $wpcf7->title();
$submited['posted_data'] = $submission->get_posted_data();
}
$data = array(
'name' => $submited['posted_data']['name'],
'email' => $submited['posted_data']['email']
);
$wpdb->insert( $wpdb->prefix . 'tps_forms',
array(
'form' => $submited['title'],
'data' => serialize( $data ),
'date' => date('Y-m-d H:i:s')
)
);
}
但是这段代码将所有表单的数据插入到一列中,例如我如何在列中划分变量?(例如姓名、姓氏、地址等)
提前感谢大家
这是一个旧项目,它帮助我解决了在不使用CFDB
的情况下集成来自联系表单 7 的数据的问题。
我不知道这是否是您想要做的,但是您可以将字段添加到表中,然后添加分解的变量,如下所示:
$wpdb->insert( $wpdb->prefix . 'tps_forms',
array(
'form' => $submited['title'],
'name' => $data['name'],
'email' => $data['email'],
'message' => $data['message'],
'date' => date('Y-m-d H:i:s')
)
);
谢谢!