在数据库中保存 wordpress 联系表 7 提交
Posted
技术标签:
【中文标题】在数据库中保存 wordpress 联系表 7 提交【英文标题】:Saving wordpress contact form 7 submissions on the database 【发布时间】:2016-04-20 01:15:04 【问题描述】:我正在尝试将 Contact Form 7 Submissions 保存在数据库中。 目前我正在使用 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;
然后我在当前的 functions.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')
)
);
但是这段代码将所有表单的数据插入到单个列中,例如,我如何将变量分成列? (例如姓名、姓氏、地址等)
提前感谢大家!!!
【问题讨论】:
【参考方案1】:现在这是一个旧项目,它帮助我解决了在不使用 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')
)
);
谢谢!
【讨论】:
以上是关于在数据库中保存 wordpress 联系表 7 提交的主要内容,如果未能解决你的问题,请参考以下文章