【问题标题】:Saving contact form 7 data into custom db and not wordpress db将联系表格 7 数据保存到自定义数据库而不是 wordpress 数据库
【发布时间】:2018-10-18 07:19:50
【问题描述】:

我正在使用联系表单 7 创建我的表单,并且我在同一服务器上托管了一个自定义数据库,该数据库应包含相关数据。

我想将来自联系人 from7 的数据存储到我的自定义数据库中,而不是 wordpress 数据库中。

我现在在functions.php中做下面的事情,

add_action('wpcf7_before_send_mail', 'save_form');

function save_form($wpcf7) {

    /* For connecting to database */
    $dbuser = "user";
    $dbpass = "pass";
    $dbhost = "localhost";
    $dbname = "cistom_db";

    // Connect to server and select database.
    $db = mysqli_connect($dbhost, $dbuser, $dbpass) or die("cannot connect");
    mysqli_select_db($db, $dbname) or die("cannot select DB");

    $submission = WPCF7_Submission::get_instance();

    if ($submission) {

        $submited = array();
        $submited['title'] = $wpcf7->title();
    } else {
        echo 'error';
    }

    $insert_query = "insert into candidate(title)values('" . $submited['title'] . "')";

    $result = mysqli_query($db, $insert_query);
    if (!$result) {
        die('Invalid query: $insert_query : ' . mysqli_error($db));
    }
}

但是,这里似乎没有任何效果。有人可以帮忙吗?

【问题讨论】:

  • @Manini 根据您的要求解决了您的问题,请检查我更新的代码并重放您的反馈。

标签: database wordpress contact-form-7


【解决方案1】:

按照步骤将联系表格 7 数据存储在自定义表中:

1) 创建自定义表格

 CREATE TABLE candidate(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(50)
);

2) 创建联系表单 7 个字段

[text* title]
[submit "Send"]

3) 将下面的代码添加到function.php

  function contactform7_before_send_mail( $form_to_DB ) {
    //set your db details
    $mydb = new wpdb('root','','cistom_db','localhost');

    $form_to_DB = WPCF7_Submission::get_instance();
    if ( $form_to_DB ) 
        $formData = $form_to_DB->get_posted_data();
    $title = $formData['title'];

    $mydb->insert( 'candidate', array( 'title' =>$title ), array( '%s' ) );
}
remove_all_filters ('wpcf7_before_send_mail');
add_action( 'wpcf7_before_send_mail', 'contactform7_before_send_mail' );

希望这对你有用。

【讨论】:

  • 感谢您的回复,但我已经有一个自定义数据库,它不是 wp db 的一部分,而是托管在同一台服务器上,所以我想将数据存储到我的自定义数据库中
  • 非常感谢。我用的是mysql_query,我的错,
  • 太棒了。这是一个了不起的解决方案。但我有一个问题。假设我有多个表单,我想将值保存在不同的数据库表中。如何检查提交的表单并据此执行一些操作?
  • 来晚了,但对某些人有帮助。您可以添加识别表单的隐藏字段,并在此基础上在任何数据库或表中插入记录。 @Waeez
  • 谢谢,它对我有用。并且节省了很多时间。已经投票了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2018-12-29
  • 2016-04-20
  • 2018-07-18
  • 2018-06-23
  • 2020-08-01
  • 2020-12-20
相关资源
最近更新 更多