Контактная форма 7 - не может запустить php

Я установил WordPress и плагин contact form 7 в этом.

Чтобы сделать это многостраничной контактной формой, которую я установил Contact Form 7 Multi-Step Forms также. Пока все отлично работает. Даже почта отправляется.

У меня проблема в том, что я хочу запустить PHP-код до того, как письма будут отправлены.

Я вставил этот код, чтобы попробовать способность плагина для его запуска.

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);

Функция даже отлично работает, когда я запускаю ее вне плагина в дополнительном php-файле.

Теперь я не могу понять, почему функция не работает при вставке в плагин?

3 ответа

Решение

WordPress создать Tabel, используя этот путь не в структуре PHP для подключения:

Больше информации для создания, получения данных таблицы для 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 );
}

Запросите базу данных в WordPress, используя ее глобально wpdb объект как этот путь

Отослать это

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

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

+1 для Рэйва Пателя

Я только предлагаю проверить, существует ли таблица, прежде чем пытаться создавать ее каждый раз.

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 );
    }
}
Другие вопросы по тегам