Вставка данных в базу данных с использованием формы

Я пишу простой плагин, который создает таблицу с названием «информационный бюллетень» в базе данных и предоставляет короткий код для размещения регистрационной формы на страницах. форма содержит «имя» и «адрес электронной почты». У меня проблема с вставкой данных формы (имя + электронная почта) в базу данных. Я написал это:

<?php $name = $_POST['name']; $email = $_POST['email']; function insertuser(){ global $wpdb; $table_name = $wpdb->prefix . "newsletter"; $wpdb->insert($table_name, array('name' => $name, 'email' => $email) ); } ?> 

но id не работает. что я должен делать, чтобы получить данные из формы и вставить в таблицу?

Две функции $name и $email неизвестны внутри функции. Вы должны сделать их глобально доступными внутри него, изменив global $wpdb на global $wpdb, $name, $email :

 require_once('../../../wp-load.php'); /** * After tf's comment about putting global before the variable. * Not necessary (http://php.net/manual/en/language.variables.scope.php) */ global $name = $_POST['name']; global $email = $_POST['email']; function insertuser(){ global $wpdb, $name, $email; $table_name = $wpdb->prefix . "newsletter"; $wpdb->insert($table_name, array('name' => $name, 'email' => $email) ); } insertuser(); 

Или вы можете поместить переменные в аргументы функции:

 require_once('../../../wp-load.php'); $name = $_POST['name']; $email = $_POST['email'] function insertuser( $name, $email ) { global $wpdb; $table_name = $wpdb->prefix . 'newsletter'; $wpdb->insert( $table_name, array( 'name' => $name, 'email' => $email ) ); } insertuser( $name, $email ); 

Или, без функции:

 require_once('../../../wp-load.php'); global $wpdb; $name = $_POST['name']; $email = $_POST['email']; $table_name = $wpdb->prefix . "newsletter"; $wpdb->insert( $table_name, array( 'name' => $name, 'email' => $email ) );