6

I have installed WordPress and the plugin contact form 7 in it.

To make it a multi-page contact form I have installed Contact Form 7 Multi-Step Forms as well. Everything works fine until yet. Even the mail gets sent.

The problem I am having is, that I want to run some PHP-code before the emails get sent.

I have inserted this code to try the ability of the plugin to run it.

function testfunc( $cf7 )
{
    mysql_connect("localhost", "user_name", "password") or die(mysql_error());
    mysql_select_db("db_name") or die(mysql_error());
    mysql_query("CREATE TABLE `aaaaaaaaaaa` ( test VARCHAR(30))");
}

add_action( 'wpcf7_before_send_mail', 'testfunc', 1);

The function even works fine when I run it outside of the plugin in an extra php-file.

Now I cannot figure out why the function does not work when inserted in the plugin?

Jamie Taylor
  • 4,709
  • 5
  • 44
  • 66
Friedrich
  • 2,211
  • 20
  • 42

3 Answers3

3

Query database in wordpress using it's global wpdb object like this way

Refer this

function testfunc( $cf7 )
{
    global $wpdb;
    $wpdb->query("CREATE TABLE `aaaaaaaaaaa` ( test VARCHAR(30))");
}

add_action( 'wpcf7_before_send_mail', 'testfunc', 1);
Community
  • 1
  • 1
shyammakwana.me
  • 5,562
  • 2
  • 29
  • 50
2

wordpress create tabel using this way not in php structure for connect:

More info hear for create, get table data for wp

function testfunc( $cf7 )
{
    global $wpdb;

    $table_name = $wpdb->prefix . 'tablename';

    $sql = "CREATE TABLE IF NOT EXISTS ".$table_name."(
      id int(11) NOT NULL AUTO_INCREMENT,
      name varchar(255) DEFAULT NULL,
      UNIQUE KEY id (id)
    );";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
Ravi Patel
  • 5,121
  • 2
  • 25
  • 44
0

+1 for Rave Patel

I only suggest that you check if the table exists before trying to create it everytime.

function testfunc( $cf7 )
{

    global $wpdb;

    $table_name = $wpdb->prefix . 'tablename';

    if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {

        $sql = "CREATE TABLE $table_name (
            id int(11) NOT NULL AUTO_INCREMENT,
            name varchar(255) DEFAULT NULL,
            UNIQUE KEY id (id)
        )";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
    }
}
hutchbat
  • 806
  • 6
  • 14