Добавить пользовательские данные в таблицу при создании пользователя?

Я пытаюсь выяснить, как добавить информацию пользователя и конкретные метаданные в отдельную таблицу через PHP. Я бы предпочел сделать это, когда пользователь отправил в wp_users и таблицу wp_usermeta . Я использую плагин аукциона WooCommerce и тему Salient.

Также, если я сделал PHP-файл, который запускал запрос, чтобы вытащить данные, а затем вставить, где это хорошее место, я могу вызвать эту функцию, чтобы убедиться, что таблица обновлена?

Это функция, которую я создал.

 add_action('user_register', 'save_to_donors',10,1); function save_to_donors( $user_id ) { $single = true; $user_email = get_userdata($user_id); $fn= get_user_meta($user_id, 'first_ name', $single ); $ln= get_user_meta($user_id, 'last_name', $single ); $em= $user_email->user_email; $ph= get_user_meta($user_id, 'billing_phone', $single ); $ad= get_user_meta($user_id, 'billing_address_1', $single ); $ci= get_user_meta($user_id, 'billing_city', $single ); $st= get_user_meta($user_id, 'billing_state', $single ); $zi= get_user_meta($user_id, 'billing_postcode',$single ); $do= get_user_meta($user_id, '_money_spent', $single ); $sql = "INSERT INTO donors (user_id,first_name,last_name,email," . "phone,address,city,state,zip,amount_donated)". "VALUES('$user_id','$fn','$ln','$em','$ph','$ad','$ci','$st','$zi','$do')"; $result = mysqli_query($wpdb, $sql) or die('Write Error!'); } 

Послушайте, вы должны искать крюк для покупки покупки в woocommerce. Это было бы, когда вы могли бы добавить, что было сделано пожертвование и в какой сумме, вы могли бы получить любую пользовательскую информацию, пожертвовать и другую информацию, которая вам нужна, и сохранить ее в таблице ваших доноров.

использовать это:

 add_action('woocommerce_order_status_completed', 'save_to_donors',10,1); 

вместо этого:

 add_action('user_register', 'save_to_donors',10,1); 

также измените $user_id на $order_id как параметр, передаваемый в вашу функцию.

Вам нужно будет внести некоторые изменения в вашу функцию, так как теперь $order_id будет передаваться в вашу функцию вместо $user_id . Вы можете использовать некоторый из следующего кода, чтобы получить объект $order и $user_id я также нашел другой код, который поможет вам получить информацию от заказа, а не от пользователей meta, но не уверен, что они будут разными.

 $order = new WC_Order( $order_id ); $user_id = $order->user_id; $billing_address = $order->get_billing_address(); $billing_address_html = $order->get_formatted_billing_address(); // for printing or displaying on web page $shipping_address = $order->get_shipping_address(); $shipping_address_html = $order->get_formatted_shipping_address(); // for printing or displaying on web page 

Информация об использовании этого крюка woocommerce_order_status_completed
Информация о том, как получить идентификатор пользователя из идентификатора заказа

Этот крючок действия позволяет вам получать доступ к данным для нового пользователя сразу же после их добавления в базу данных. Идентификатор пользователя передается для подключения в качестве аргумента.

Не все метаданные пользователя были сохранены в базе данных при срабатывании этого действия. Например, псевдоним находится в базе данных, но first_name и last_name. Пароль уже был зашифрован при запуске этого действия.

Как правило, этот крючок используется для сохранения дополнительных метаданных пользователей, выполненных в пользовательских регистрационных формах.

В этом примере будет сохранено поле first_name, переданное пользовательским полем регистрации.

Кроме того, имейте в виду, что валидация полей регистрации не должна выполняться в рамках этого крючка! Проверяйте с помощью hook_index_regors вместо этого (hook_ user_register не будет вызываться, если проверка registration_errors не удалась).

 add_action( 'user_register', 'myplugin_registration_save', 10, 1 ); function myplugin_registration_save( $user_id ) { if ( isset( $_POST['first_name'] ) ) update_user_meta($user_id, 'first_name', $_POST['first_name']); } 

ПРИМЕЧАНИЕ. Этот ответ выглядит неуместным для вопроса OP после дальнейшего анализа добавленной / обновленной функции в вопросе. Я оставляю этот ответ на месте и создаю новый ответ для исторического использования, поскольку часть вопроса кажется применимой.

Вы можете использовать что-то вроде следующего для создания метаданных пользователей, когда пользователи добавляются в таблицу пользователей. Поместите это в файл functions.php вашей темы.

 function myplugin_registration_save( $user_id ) { if ( isset( $_POST['first_name'] ) ) update_user_meta( $user_id, 'your_key', // name of key $your_value // value of your key ); } add_action( 'user_register', 'myplugin_registration_save', 10, 1 ); 

Чтобы получить эти данные для последующего использования, используйте функцию:

 get_user_meta($user_id, 'your_key', $single); 

Дополнительная информация о user_register hook Дополнительная информация о update_user_meta () Дополнительная информация о get_user_meta ()