2016-06-10 2 views
0

Я изо всех сил пытаюсь получить идентификатор автоматического увеличения, работающий в динамическом поле, когда пользователь отправляет форму. Как обновить пользовательскую таблицу для каждой записи? & Как нам получить идентификатор из пользовательской таблицы?Получение идентификатора автоматического инкремента в контактной форме 7

Создать таблицу с автоматическим приращением:

function create_db() { 
    global $wpdb; 

    $charset_collate = $wpdb->get_charset_collate(); 
    $table_name = $wpdb->prefix . "id_count"; 
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) { 
     $sql = "CREATE TABLE $table_name (
       `id` mediumint(9) NOT NULL AUTO_INCREMENT, 
       `name` mediumtext NOT NULL, 
       UNIQUE KEY id (id) 
     )$charset_collate;"; 

     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     dbDelta($sql); 
    } 

} 
add_action("init", "create_db"); 

Когда форма представить:

function your_wpcf7_posted_data($posted_data) { 
    global $wpdb; 
    $name = $posted_data['your-name']; 

    $table_name = $wpdb->prefix . "id_count"; 
    $posted_data['cf7-counter'] = $wpdb->insert_id; 
); 
+0

По общему правилу: Не используйте идентификатор в вашей форме, он будет создан автоматически, когда вы вставляете дату a в базе данных. –

+0

есть ли какой-нибудь ресурс, на который я могу смотреть? в настоящее время моя форма переходит к плагину cfdb, который не состоит из столбца автоматического увеличения. http://cfdbplugin.com/ – mark5

+0

Да, я это заметил. Но вы, вероятно, все еще получаете действительное значение автоматического увеличения? Возникает вопрос: почему вы хотите получить значение автоматического прироста в своей форме? Для обновлений? –

ответ

0

Кажется, что ваш код SQL не работает должным образом, вы можете попробовать ниже код:

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
      `id` int(9) NOT NULL, 
      `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 

) ENGINE = MyISAM AUTO_INCREMENT = 262 DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci ";

0

Hi Если вы ищете динамическое число поколение в контактную форму 7, это руководство WordPress поможет вам.

Шаги:

Тема function.php добавить этот код

function wpcf7_generate_rand_number($wpcf7_data) { 
$properties = $wpcf7_data->get_properties(); 
$shortcode = '[rand-generator]'; 
$mail = $properties['mail']['body']; 
$mail_2 = $properties['mail_2']['body']; 
if(preg_match("/{$shortcode}/", $mail) || preg_match("/[{$shortcode}]/", $mail_2)) { 
$option = 'wpcf7sg_' . $wpcf7_data->id(); 
$sequence_number = (int)get_option($option) + 1; 
update_option($option, $sequence_number);</code> 
$properties['mail']['body'] = str_replace($shortcode, $sequence_number, $mail); 
$properties['mail_2']['body'] = str_replace($shortcode, $sequence_number, $mail_2); 
$wpcf7_data->set_properties($properties); 
} 
} 
add_action('wpcf7_before_send_mail', 'wpcf7_generate_rand_number'); 

Затем используйте поле [rand-generator]

Источник: https://www.banna360.com/contact-from7-dynamic-number-generation/

Смежные вопросы